どのようにASP.Netメンバーシップセキュリティの質問を使用して、カスタムのパスワードの回復のために回答しないように?
-
06-09-2019 - |
質問
私はセキュリティの質問があり、ASP.Netメンバシッププロバイダが与える機能をお答えする必要はありませんが、私は失われた/パスワードを忘れた場合のページを有効にしますか。
このページでは、ユーザーが彼/彼女のメールアドレスを入力する場所だろうと彼らはその登録のメールアドレスに送信されたリンクを介して自分のパスワードをリセットするために、ユーザが登録された場合は、メールがそのアドレスに送信されます。
私はそのような要求、要求だけでなく、ご要望に応じて有効期限に割り当てられたランダムキーを追跡するために、カスタム・テーブルを作成しました。しかし実際には、パスワードをリセットするためにコードを書くには、私は、セキュリティQ&(私が持っていない)ビットを使用することなく、ResetPasswordの(電子メール、NEWPASSWORD)のような何かをする方法があるように思われないことに気づきました。
単にメンバーシップ機能に建てられ経由してユーザーのパスワードをリセットする方法はありますか?
でない場合は、どのように私はこれを成し遂げる必要があるでしょうか?
与えられた任意の助けを事前に感謝します。 -Nissan
解決
だった私は何をやってしまった次の
public string ResetPassword(string email)
{
var m_userName = Membership.GetUserNameByEmail(email);
var m_user = Membership.GetUser(m_userName);
return m_user.ResetPassword();
}
私は
パスワードを変更するには、この値を使用するために新しいメソッドを追加しましたpublic bool ChangeLostPassword(string email, string newPassword)
{
var resetPassword = ResetPassword(email);
var currentUser = Membership.GetUser(Membership.GetUserNameByEmail(email), true);
return currentUser.ChangePassword(resetPassword, newPassword);
}
他のヒント
あなたはweb.configファイルでこのオプションを変更していないのはなぜ?
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
で
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" ...
..........
所属していません StackOverflow