現在、ユーザーがパスワードを忘れたときにセキュリティ アンサーが正しいことを要求する MVC 3 アプリケーションを使用しています。
ただし、セキュリティ アンサーを知らなくても、システム管理者が任意のユーザーのパスワードをリセットできるようにしたいと考えています。
これに対する解決策はありますか?
現在、ユーザーがパスワードを忘れたときにセキュリティ アンサーが正しいことを要求する MVC 3 アプリケーションを使用しています。
ただし、セキュリティ アンサーを知らなくても、システム管理者が任意のユーザーのパスワードをリセットできるようにしたいと考えています。
これに対する解決策はありますか?
私はこのソリューションに2つの異なるプロバイダーを使用することになりました。両方のプロバイダーがアプリケーションのWeb.Configファイルに追加されました。
<membership>
<providers>
<clear/>
<add name="ProviderRequiredAnswer" .......
enablePasswordReset="true" requiresQuestionAndAnswer="true" ...... />
<add name="ProviderNoRequiredAnswer" ......
enablePasswordReset="true" requiresQuestionAndAnswer="false" ...... />
</providers>
</membership>
通常のユーザーがパスワードを忘れてリセットする必要がある場合、次の方法で最初のプロバイダーを使用するユーザーを取得します。
MembershipUser user = Membership.Providers [" ProviderRequiredAnswer "] .GetUser(model.userToReset、false);
文字列autoGenPass=userToReset.ResetPassword(model.PasswordAnswer);
bool resetPasswordSucceeded = userToReset.ChangePassword(autoGenPass、model.NewPassword);
一方、セキュリティ回答を持っていないシステム管理者がユーザーのパスワードをリセットする必要がある場合は、次の方法で2番目のプロバイダーを使用するユーザーを取得します。
MembershipUser user = Membership.Providers [" ProviderNoRequiredAnswer "] .GetUser(model.userToReset、false);
文字列autoGenPass=userToReset.ResetPassword();
bool resetPasswordSucceeded = userToReset.ChangePassword(autoGenPass、model.NewPassword);