asp.net - 如何不使用 ASP.Net 成员(member)安全问题和答案进行自定义密码恢复?

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

我不想拥有 ASP.Net 成员(member)提供商提供的安全问题和答案功能,但我确实希望启用丢失/忘记密码页面。

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

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

有什么方法可以通过内置的成员(member)功能简单地重置用户的密码吗?

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

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

最佳答案

我最终做了以下事情

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

    }

关于asp.net - 如何不使用 ASP.Net 成员(member)安全问题和答案进行自定义密码恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/920334/

相关文章:

c# - 为什么 httpRuntime targetFramework ="4.5"禁用抓取 .ASPXAUTH cookie?

asp.net - 如何在 ASP.NET Membership Cookie 中存储自定义数据

spring - 创建帐户,忘记密码和更改密码

django - 如何覆盖默认的 django 忘记密码模板?

c# - 如何修复我的正则表达式 ^\d+[-\d]?\d* 以匹配 123-45 而不是 123-?

asp.net - 如何在ASP.NET MVC 2中为Html.EditorForModel()方法获取textarea

asp.net - ODP.net 连接池 : ClientID, 客户端标识符从第一个登录的用户开始不会改变

c# - 基于现有表创建 ASP.net 登录系统?

asp.net - IIS 重定向在没有尾部斜线的情况下无法工作

php - cakephp 2.0 中的忘记密码功能