我的工作實現自定義的成員提供,對我的數據庫中現有的模式工作,並有一些想法/問題。登錄控制和自定義成員資格提供
Login控件會自動調用成員提供的方法的ValidateUser,所以無論我如何實現提供商的登錄控制關心的是通過這個方法返回的布爾值的唯一的事。我感到困惑的是登錄嘗試失敗的原因可能有很多,用戶被鎖定,在一段時間內嘗試過太多等等。我無法將這些信息傳達給控制器,因此它可以顯示正確的信息。成員資格提供程序的其他屬性(如PasswordStrengthRegularExpression)對登錄控件(開箱即用)絕對沒有影響,我希望它會自動以某種方式轉換爲正則表達式驗證程序,但似乎並不是案件。因此,如果我希望他們採用控件本身,我似乎需要使用提供者配置中的這些設置來初始化登錄控件屬性。
如果登錄控件開箱即用(沒有手動處理事件並按上述方法進行初始化),只需調用成員資格提供程序上的ValidateUser方法,但我無法將其傳遞迴Login控制驗證失敗的原因,甚至可以根據特定的時間窗限制驗證請求。最終我的問題是爲什麼我甚至會使用會員提供商,然後與登錄控制結合使用?看起來它只是設計用於Yes/No類型的響應,這是非常嚴格的。如果我想用不同消息的邏輯構建回用戶,我需要處理登錄控制事件並調用我自己的身份驗證類,這些類將處理我所有的業務需求,並將自定義錯誤消息返回給Login控件以返回向用戶顯示,以便他們知道他們的嘗試爲何失效。
除非我錯了,在我的假設,似乎登錄控件作爲成員API之間的接口是過於嚴格是有用的。也許這個API更適合像ChangePassword這樣的其他認證控制,但對於實際的登錄控制,我沒有看到這一點。
我很感激你的想法。
會員供應商在這一點上不會失去對我的價值嗎?如果我提前處理Authenticate事件,那麼我必須自己調用提供者上的ValidateUser方法。這種方法不夠,所以我不得不調用另一種方法,實際上會告訴我爲什麼登錄失敗。我同意你的密碼強度。 – e36M3 2010-10-11 20:40:08
@ e36M3 - 你說得對。這是要走的路。我要做的是先調用所有驗證,在控件的ErrorMessage屬性上寫入錯誤,最後如果失敗了, – 2010-10-12 06:01:23