2

ユーザーが設定でパスワードを変更できるようにしようとしていました。ajaxページでは、使用していました

WebSecurity.Logout();

したがって、ログアウトはこのコードのせいだと思いました。しかし、パスワードの変更が成功した後にこの行が存在しなくても、ユーザーがログアウトすることに気付きました。というわけでググってみました。また、多くの場所で、このコードがキャッシュと Cookie を削除するため、ユーザーがログアウトされることがわかりました。

私の質問:ユーザーのログアウトを防ぐ方法はありますか? または、パスワードの変更が成功した後もユーザーがログインできるように、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 に答える