Asp.net 如何通过WebSecurity.ChangePassword()防止用户注销

Asp.net 如何通过WebSecurity.ChangePassword()防止用户注销,asp.net,Asp.net,我试图让用户在设置中更改密码。在ajax页面中,我使用了 WebSecurity.Logout(); 所以我认为注销是因为这个代码。但是我注意到用户注销了,即使在密码更改成功后这行代码不存在。所以我试着用谷歌搜索它。在很多地方,我发现这段代码删除了缓存和cookie,因此用户被注销 我的问题:有没有办法阻止用户注销?或者我可以保存Cookie或缓存,以便用户在密码更改成功后仍然登录。您应该使用WebSecurity.ChangePassword,这将使用所有新凭据续订当前Cookie,然后将其

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

WebSecurity.Logout();
所以我认为注销是因为这个代码。但是我注意到用户注销了,即使在密码更改成功后这行代码不存在。所以我试着用谷歌搜索它。在很多地方,我发现这段代码删除了缓存和cookie,因此用户被注销


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

您应该使用
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.");
    }
}

这是一个老生常谈的问题,很抱歉让它复活了,但对于其他面临这个问题的人:


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

没错!但这也会让用户注销。我不想这样。我希望他保持活跃,即使他的密码已被更改!还有,这个是
MVC
我想要
ASP.NET网页/Razor
。不过,感谢您的时间和帮助!:)