2

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

此页面将是用户输入他/她的电子邮件地址的地方,如果用户已注册,则电子邮件将发送到该地址,以便他们通过发送到该注册电子邮件地址的链接重置密码

我创建了自定义表来跟踪此类请求、分配给请求的随机键以及请求的到期日期。然而,在编写代码以实际重置密码时,我意识到似乎没有一种方法可以在不需要使用安全问答位(我没有)的情况下执行 ResetPassword(email, newPassword) 之类的操作。

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

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

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

4

2 回答 2

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

    }
于 2009-05-28T11:36:37.463 回答
3

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

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

<membership>
   <providers>
      <clear/>
      <add name="AspNetSqlMembershipProvider" ...
      ..........
于 2009-05-28T14:32:54.067 回答