我试图让用户在设置中更改密码。在ajax页面中,我正在使用
WebSecurity.Logout();
所以我认为注销是因为这段代码。但后来我注意到用户注销了,即使密码更改成功后这条线不存在。所以我试着用谷歌搜索它。在很多地方我发现这段代码删除了缓存和cookies,所以用户被注销了。
我的问题:有什么方法可以防止用户注销?或者我可以保存 Cookie 或缓存,以便在密码更改成功后用户仍然登录。
我试图让用户在设置中更改密码。在ajax页面中,我正在使用
WebSecurity.Logout();
所以我认为注销是因为这段代码。但后来我注意到用户注销了,即使密码更改成功后这条线不存在。所以我试着用谷歌搜索它。在很多地方我发现这段代码删除了缓存和cookies,所以用户被注销了。
我的问题:有什么方法可以防止用户注销?或者我可以保存 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.");
}
}
这是一个古老的问题,因此很抱歉将其带回生活,但对于面临此问题的其他任何人:
您已经在此方法中获得了他们的用户名和密码。重新登录。