2010-04-05 14 views
3

我用asp.net寫我自己的自定義MembershipProvider嘗試,我想推出自己的登錄頁面。我們做了一些相當特殊的東西在登錄時如此,所以我需要一種方法來手動登錄用戶不能使用默認的登錄控制。如何使用MembershipProvider手動登錄用戶?

到目前爲止,我還沒有找到如何編寫自己的登錄什麼控制,所以我在這裏,想知道如何我可以通過MembershipProvider手動登錄用戶。

我已經試過

Membership.ValidateUser("user", "pass"); 

和而不會調用ValidateUser()在我的自定義MembershipProvider,它並返回true,實際上它並不登錄我進去。

順便說一句我相當新的整體MembershipProvider的東西,所以如果我甚至沒有在正確的波長,請隨時讓我知道。

回答

7

一個的MembershipProvider只存儲有關用戶,實際登錄和會話處理的數據是由一個AuthenticationProvider的處理。例如,如果您使用表單(=基於cookie)身份驗證,請檢查FormsAuthentication.SetAuthCookie以及該類中的其他相關方法。

+0

啊謝謝你解釋我的分離!這確實是我需要什麼 – 2010-04-05 15:27:23

+0

是的,是的AuthenticationProvider甚至沒有我的雷達,這將幫助很多 – 2010-04-05 15:35:15

+0

記住,內置的表單認證提供商合作相當精細定製的會員提供的,除非你需要非常做些什麼特殊的,它應該「只是工作」。 – 2010-04-05 15:37:06

9
if (Membership.ValidateUser(Username.Text, Password.Text)) 
{ 

    FormsAuthentication.SetAuthCookie(Username.Text, false); 
    FormsAuthentication.RedirectFromLoginPage(Username.Text, false); 
} 
else 
{ 
// do something else 
} 

以上從用在一個情況跟你一樣,我們需要在登錄時做一堆額外的工作定義成員資格提供工作代碼複製。 (敏感操作reomved保護無辜者。)

1

對於未來的參考,你可以檢查出任何組件的內部代碼,如果你看看組件內部進行反射:

有一個免費版本,它會做一切你需要。

而且你不應該創建自己的登錄控制,因爲登錄是非常可擴展。您可以編輯模板並處理各種事件以使其達到您想要的效果。