2

我试图让用户在设置中更改密码。在ajax页面中,我正在使用

WebSecurity.Logout();

所以我认为注销是因为这段代码。但后来我注意到用户注销了,即使密码更改成功后这条线不存在。所以我试着用谷歌搜索它。在很多地方我发现这段代码删除了缓存和cookies,所以用户被注销了。

我的问题:有什么方法可以防止用户注销?或者我可以保存 Cookie 或缓存,以便在密码更改成功后用户仍然登录。

4

2 回答 2

0

您应该使用WebSecurity.ChangePassword,这将使用所有新凭据更新当前 cookie,然后将其发送回响应中。

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Manage(ChangePassward model)
{
    bool changePasswordSucceeded = false;

    try
    {
        changePasswordSucceeded = WebSecurity.ChangePassword(User.Identity.Name, model.OldPassword, model.NewPassword);
    }
    catch (Exception)
    {
        changePasswordSucceeded = false;
    }

    if (changePasswordSucceeded)
    {
        return RedirectToAction("Some Page here", new { Message = "Success" });
    }
    else
    {
        ModelState.AddModelError("", "The current password is incorrect or the new password is invalid.");
    }
}
于 2013-09-19T13:17:33.387 回答
0

这是一个古老的问题,因此很抱歉将其带回生活,但对于面临此问题的其他任何人:

您已经在此方法中获得了他们的用户名和密码。重新登录。

于 2014-01-12T03:03:26.457 回答