使用GeneratePasswordResetToken进行MVC密码恢复

时间:2015-12-22 10:20:22

标签: c# asp.net-mvc password-recovery

我正在开发一个带有发送令牌的密码恢复系统。我跟随微软的领导,但我不明白一些事情:

    1. 创建一个密码重置页面,其中包含一个用户可以输入其电子邮件地址的字段。
    1. 当用户在密码重置页面中输入了他或她的电子邮件地址时,请验证该电子邮件地址是否有效 用户。如果是,请通过调用生成密码重置令牌 GeneratePasswordResetToken(String,Int32)方法。
    1. 创建指向您网站中的确认页面的超链接,该链接包含该标记作为链接中的查询字符串参数 URL。
    1. 通过电子邮件将链接发送给用户。当用户收到电子邮件消息时,他或她可以单击该链接以调用该电子邮件 确认页面。
    1. 创建一个确认页面,该页面从URL参数中提取令牌,并允许用户输入新密码。
    1. 当用户提交新密码时,调用ResetPassword(String,String)方法并传递密码重置令牌 和新密码。如果令牌有效,则密码为 重启。如果令牌无效(例如,它已过期), 显示错误消息。

现在,我设法进入第3点,但我不知道如何实施它,因为我看到的所有指南都不起作用。

代码如下:

public ActionResult InvioPassword(FormCollection form)
        {
            if (Request.IsAuthenticated)
            {
                return RedirectToAction("Manage", "Account");
            }

            var email = form["email"];
            var ttf = new TocFruit();
            var psw = ttf.Customers.FirstOrDefault(x => x.CustomerEmail.Equals(email));
        string esito = "";
            if (psw != null)
            {
                Email.RecuperaPassword(email, psw.Comment);
                esito = "Gentile cliente le abbiamo inviato una mail al suo indirizzo di posta con la sua password.";
            }
        else
        {
            esito = "Mail non esistente...";
        }
        ViewBag.esitoMail = esito;
            return View();
        }

    public static void RecuperaPassword(string email, string password)
    {
        try
        {
            //generate password token
            var token = WebSecurity.GeneratePasswordResetToken(email);
            //create url with above token
            var resetLink = "<a href='" + Url.Action("ResetPassword", "Account", new { un = email, rt = token }, "http") + "'>Reset Password</a>";
        }
        catch (Exception ex)
        {
        }
    }

0 个答案:

没有答案