Я создаю свое первое приложение ASP.NET MVC и хотел бы, чтобы пользователь оставался в системе при каждом изменении своего пароля и перенаправлении на домашнюю страницу.
Я использую SecurityStamp для включения «Выйти из системы везде», когда пользователь входит в систему где-то еще. У меня validateInterval установлен на 0. Пока эта функция работает нормально, если я вхожу в систему с помощью другого браузера, исходный сеанс выходит из системы при выполнении другого запроса.
Проблема, с которой я столкнулся сейчас, заключается в том, что я хотел бы, чтобы пользователь оставался в системе и перенаправлялся на домашний экран (не на страницу входа), когда он обновляет свой пароль. Возможно ли это сделать?
Мой контроллер смены пароля выглядит так:
public async Task<ActionResult> ChangePassword(ChangePasswordViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword);
if (result.Succeeded)
{
var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
if (user != null)
{
await UserManager.UpdateSecurityStampAsync(user.Id);
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
// go to welcome page
}
}
}
Меня смущает порядок, в котором мне нужно сменить пароль, обновить марку безопасности и войти в систему. Нужно ли мне выходить из системы, прежде чем снова входить в нее?