我不希望有安全问题和答案的功能,ASP.Net成员资格提供给了,但我还希望能够丢失/遗忘密码的页面。

这个页面将是其中用户可以输入他/她的电子邮件地址,如果用户被注册为他们通过发送到注册的电子邮件地址的链接重设密码的电子邮件将被发送到该地址

我已经创建的自定义表来跟踪这样的请求,分配给该请求以及所述请求的到期日的随机密钥。然而,在编写代码,以实际重置密码,我意识到,似乎没有要,做类似ResetPassword(电子邮件,新密码),而无需使用安全Q&A位(我没有)的方法。

有没有办法简单地通过一个内置的隶属度函数重置用户的密码?

如果不是,我怎么会需要得到这个工作?

预先感谢给出的任何帮助。 -Nissan

有帮助吗?

解决方案

我落得这样做以下

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

    }

其他提示

你为什么不改变这种选项在web.config中?

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

<membership>
   <providers>
      <clear/>
      <add name="AspNetSqlMembershipProvider" ...
      ..........
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top