我试图让用户在设置中更改密码。在ajax页面中,我正在使用
WebSecurity.Logout();
所以我认为退出是因为这段代码。但后来我注意到用户注销,即使密码更改成功后该行不存在。所以我试着谷歌吧。在许多地方,我发现此代码删除了缓存和Cookie,因此用户已注销。
我的问题:有什么方法可以阻止用户注销?或者我可以保存Cookie或缓存,以便在密码更改成功后用户仍然登录。
答案 0 :(得分: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.");
}
}
答案 1 :(得分:0)
这是一个古老的问题,所以道歉让它恢复生机,但对于任何面临这个问题的人来说:
您已在此方法中拥有其用户名和密码。将它们重新登录。