在MVC中重置密码

时间:2014-08-13 15:11:34

标签: asp.net-mvc

我在/Account/ResetPassword处有一个视图,其中用户将为他们想要重置的帐户提供电子邮件地址。

为密码重置而发送的电子邮件将包含如下所示的链接:
/Account/ResetPassword/{reset key}

我不知道如何设计视图以创建新密码。 在我看来,使用将其主设置为ResetPassword视图的局部视图,但必须将视图命名为迷惑我...

网址建议使用动态名称,那么如何创建视图?

2 个答案:

答案 0 :(得分:0)

我不会为ResetPassword视图的继承而烦恼,因为它只有一个字段,所以你不会获得太多收益。我会为CreatePassword创建一个独特的视图,您可以根据是否提供reset key参数来确定要返回的视图,例如。

public ActionResult ResetPassword(string resetKey)
{
    if (String.IsNullOrEmpty(resetKey)) {
        return View(); // will return "ResetPassword" view
    } else {
        // check validity of key then redirect if necessary
        return RedirectToAction("CreatePassword");
    }
}

答案 1 :(得分:0)

我会创建/Account/ConfirmResetPassword/{reset key}作为电子邮件中的链接。如果重置键正确,则将用户重定向到另一个视图,假设/Account/ChangePassword用户可以更改密码。如果重置密钥不正确,请继续/Account/ConfirmResetPassword/{reset key}并显示重置密钥无效的消息。

这将是/Account/ConfirmResetPassword/{reset key}

的控制器操作方法
public ActionResult ConfirmResetPassword(string resetKey)
{
    bool isResetKeyCorrect = ...; // check if resetKey is correct here.

    if (isResetKeyCorrect)
    {
        // redirect to /Account/ChangePassword
        return RedirectToAction("ChangePassword", "Account");
    }
    else
    {
        // Display a message saying that the reset key is invalid
        .......

        return View();
    }
}