IsApproved 値が FALSE の場合、ユーザーが入力したパスワードがデータベースに保存されているパスワードと一致するかどうかを確認するにはどうすればよいですか?
私がやりたいことは次のとおりです...
- ユーザー登録 - 詳細が保存され、IsApproved が false に設定されます
- ユーザーは、メンバーシップ確認リンクが記載されたウェルカム メールを受け取ります
- ユーザーが電子メールのリンクをクリック - この時点で IsApproved は True に設定されます
- ユーザーはログインできるようになりました
上記のすべてで問題ありません。問題はありません。
私が問題を抱えているところは...
ユーザーがログインを試み、IsApproved フラグが FALSE の場合、DB に保存されているパスワードとパスワードを相互参照する必要があります。
アイデアは、パスワードをクロスチェックし、ユーザーが有効な資格情報を入力した場合、ユーザーにメッセージを表示して、メールをクリックしてメンバーシップを有効にすることでした。
しかし、入力したパスワードが一致しても、コードで確認できないため、IsApproved が false に設定されているため、ValidateUser 関数は常に 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