如何不使用ASP.Net会员安全问题和答案进行自定义密码恢复?

时间:2009-05-28 11:12:57

标签: asp.net asp.net-membership forgot-password change-password

我不想拥有ASP.Net Membership Provider提供的安全问题和答案功能,但我想要启用丢失/忘记密码页面。

此页面将是用户输入其电子邮件地址的位置,如果用户通过发送到该注册电子邮件地址的链接注册了他们以重置密码,则会向该地址发送电子邮件

我已创建自定义表来跟踪此类请求,分配给请求的随机密钥以及请求的到期日期。然而,在编写实际重置密码的代码时,我意识到似乎没有一种方法可以执行类似ResetPassword(email,newPassword)的操作,而无需使用安全Q& A位(我没有)。

有没有办法简单地通过内置的会员功能重置用户的密码?

如果没有,我将如何完成这项工作?

提前感谢您提供的任何帮助。 -Nissan

2 个答案:

答案 0 :(得分:3)

我最终做的是以下

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

    }

答案 1 :(得分:3)

为什么不在web.config中更改此选项?

         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="false"

in

<membership>
   <providers>
      <clear/>
      <add name="AspNetSqlMembershipProvider" ...
      ..........