0

我目前有一个 MVC 3 应用程序,当用户忘记密码时,它要求安全答案正确。

但是,我希望系统管理员能够在不知道安全答案的情况下重置任何用户的密码。

有什么可能的解决方案吗?

4

1 回答 1

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);

字符串 autoGenPass = userToReset.ResetPassword(model.PasswordAnswer);

bool resetPasswordSucceeded = userToReset.ChangePassword(autoGenPass, model.NewPassword);

另一方面,如果没有安全答案的系统管理员需要重置用户的密码,我将通过以下方式让用户使用第二个提供程序:

MembershipUser user = Membership.Providers[" ProviderNoRequiredAnswer "].GetUser(model.userToReset, false);

字符串 autoGenPass = userToReset.ResetPassword();

bool resetPasswordSucceeded = userToReset.ChangePassword(autoGenPass, model.NewPassword);

于 2012-10-18T21:00:08.960 回答