我目前有一个MVC 3应用程序,当用户忘记密码时,要求安全答案是正确的。
但是,我希望系统管理员能够在不知道安全答案的情况下重置任何用户的密码。
对此有任何可行的解决方案吗?
答案 0 :(得分:0)
我最终使用两个不同的提供商来实现此解决方案。 两个提供程序都已添加到应用程序的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);
string autoGenPass = userToReset.ResetPassword(model.PasswordAnswer);
bool resetPasswordSucceeded = userToReset.ChangePassword(autoGenPass,model.NewPassword);
另一方面,如果没有安全答案的系统管理员需要重置用户的密码,我将通过以下方式让用户使用第二个提供商:
MembershipUser user = Membership.Providers [“ ProviderNoRequiredAnswer ”]。GetUser(model.userToReset,false);
string autoGenPass = userToReset.ResetPassword();
bool resetPasswordSucceeded = userToReset.ChangePassword(autoGenPass,model.NewPassword);