当 IsApproved 值为 FALSE 时,如何检查用户输入的密码是否与数据库中存储的密码匹配?
我希望做的是如下...
- 用户注册 - 详细信息已保存且 IsApproved 设置为 false
- 用户收到带有会员确认链接的欢迎电子邮件
- 用户单击电子邮件中的链接 - 此时 IsApproved 设置为 True
- 用户现在可以登录
好的,以上所有内容都很好,我没有发现任何问题。
我遇到问题的地方是...
当用户尝试登录并且他/她的 IsApproved 标志为 FALSE 时,我需要将他/她的密码与存储在 DB 中的密码进行交叉引用,这就是我卡住的地方。
这个想法是交叉检查密码,如果用户输入了有效的凭据,那么通过点击电子邮件等等来向用户显示一条消息,说激活你的会员资格。
但即使输入的密码匹配,因为我无法在代码中检查它,ValidateUser 函数总是返回 false,因为 IsApproved 设置为 false!
谁能指出我正确的方向?
另外我实际上不需要查看密码,所以即使有一个密封的函数,我也可以调用它来简单地确认密码是否匹配也很好......
下面是我的代码块..
Public Function ValidateUser(ByVal Username As String, ByVal Password As String, ByRef PwdMatches As Boolean, ByRef Approved As Boolean) As Boolean Implements IMembershipService.ValidateUser
'
Dim ThisMember As MembershipUser = Nothing
Dim ThisResult As Boolean = Nothing
'
Approved = False
ThisResult = False
PwdMatches = False
If String.IsNullOrEmpty(Username) Then
Throw New ArgumentException("Value cannot be null or empty.", "Username")
ElseIf String.IsNullOrEmpty(Password) Then
Throw New ArgumentException("Value cannot be null or empty.", "Password")
ElseIf _Provider.ValidateUser(Username, Password) Then
ThisResult = True
Else
Try
ThisMember = _Provider.GetUser(Username, False)
Try
If (ThisMember Is Nothing) = False Then
Approved = ThisMember.IsApproved
Try
<!-- This is the point im stuck on -->
If Password_Matches_With_Password_In_Db Then
PwdMatches = True
Else
PwdMatches = False
End If
Catch ex As Exception
ThisResult = False
End Try
Else
ThisResult = False
End If
Catch ex As Exception
ThisResult = False
End Try
Catch ex As Exception
ThisResult = False
End Try
End If
Return ThisResult
ThisMember = Nothing
ThisResult = Nothing
End Function