2012-08-23 22 views
1

我想使用它已經在我的網絡上使用,所以我寫了一個SQL數據庫代碼重寫ValidateUser()重寫的ValidateUser()與SqlMembershipProvider的和自定義SQL數據庫

public override bool ValidateUser(string username, string password) 
{ 
    return true; 
} 

我已經設置此以便它返回true,而不檢查我的數據庫現在,只是爲了測試它的理論。

這就是我需要做的,或者是有更多的工作要做,以便它能夠與其他功能正常工作,比如存儲用戶名信息以便稍後可以檢索到,或者只是將此信息存儲在會話變量?

一旦這個函數返回true,它的用戶是否得到有效的認證?

回答

1

如果您已從SqlmembershipProvider繼承,則不需要覆蓋或實施所有方法。

如果您想覆蓋ValidateUser(例如記錄無效的登錄嘗試),則不需要手動存儲用戶(他存儲在數據庫中並通過cookie標識),並且可以通過Membership.GetUser檢索。

例如:

public override bool ValidateUser(string username, string password) 
{ 
    // check in database with SqlmembershipProvider 
    bool isValid = base.ValidateUser(username, password); 
    // get user from database 
    var user = Membership.GetUser(username); 
    if(isValid) 
    { 
     // ... 
    } 
    else{ 
     // log wrong attempt if you want 
    } 
    return isValid; 
} 
+0

對不起,我沒有包括在我的問題,我目前繼承'SqlMembershipProvider'在我的課,然後重寫的ValidateUser()。我注意到你在重寫ValidateUser()時調用了base.ValidateUser(),這是否正確? – Luke

+0

@Coulton:是的,因爲我想通過使用'SqlMembershipProvider'驗證用戶。我剛剛添加了一些代碼來展示如何擴展功能。基本上'SqlmembershipProvider'你根本不需要重寫方法。這是一個完全可行的供應商。 –

+0

@Coulton:當'Membership.ValidateUser(login.UserName,login.Password)'被例如從一個登錄表單中調用時,該方法將被調用,並且如果用戶返回true,則該用戶將被認證。然後你可以調用['RedirectFromLoginPage'](http://msdn.microsoft.com/en-us/library/ka5ffkce.aspx) –

相關問題