我在使用Sql Membership Provider的Asp.Net应用程序中登录时遇到了这个奇怪的问题。
在代码中,我们首先尝试使用Membership.ValidateUser
(使用登录表单中输入的凭据)登录;如果返回false
,我们将尝试从用户名检索数据以检查登录失败的原因。
If Membership.ValidateUser(UserName, Password) Then
Return True
Else
Dim mu As MembershipUser = Membership.GetUser(UserName)
If mu IsNot Nothing Then
If mu.IsLockedOut Then
'returns message saying that user is locked
End If
If mu.IsApproved = False Then
'returns message saying that user is disabled
End If
'returns message saying that either user or password are incorrect
Else
'returns message saying that either user or password are incorrect
End If
End If
奇怪的是,Membership.ValidateUser
返回false
并更新LastActivityDate
和aspnet_Membership
表以及aspnet_Users
中的FailedPasswordAttemptCount
在aspnet_Membership
中; 但是
Membership.GetUser(UserName)
返回nothing
。
我们还尝试了直接在数据库中运行aspnet_Membership_GetUserByName
存储过程,它确实返回了该用户名的数据。
到目前为止,我们是唯一遇到问题的用户;其他用户可以顺利登录。
有什么想法为什么登录失败并且功能GetUser
返回nothing
并考虑到用户确实存在?