Как заявляет Microsoft на своем веб-сайте: Марка безопасности:
Случайное значение, которое должно изменяться при изменении учетных данных пользователя (пароль изменен, логин удален)
Iя пишу действие, в котором администратор может изменить пароль пользователя вручную:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> ForgotPassword(string userId, string newPassword)
{
var user = await _userManager.FindByIdAsync(userId);
if (user == null)
{
TempData.Put("M", new ResultMessage
{
CssClassName = "alert alert-danger alert-dismissible",
Title = "Failed!",
Message = "User not found!"
});
return RedirectToAction("Index");
}
string resetToken = await _userManager.GeneratePasswordResetTokenAsync(user);
var result = await _userManager.ResetPasswordAsync(user, resetToken, newPassword);
if (result.Succeeded)
{
var ress = await _userManager.UpdateSecurityStampAsync(user); //Is this step necessary?
if (ress.Succeeded)
{
TempData.Put("M", new ResultMessage
{
CssClassName = "alert alert-success alert-dismissible",
Title = "Success!",
Message = "Password updated successfully!"
});
return RedirectToAction("Index");
}
TempData.Put("M", new ResultMessage
{
CssClassName = "alert alert-danger alert-dismissible",
Title = "Failed!",
Message = "Failed at the security stamp step!"
});
return RedirectToAction("Index");
}
TempData.Put("M", new ResultMessage
{
CssClassName = "alert alert-danger alert-dismissible",
Title = "Failed!",
Message = "Failed to reset password!"
});
return RedirectToAction("Index");
}
и проверяет штамп безопасности каждые 15 минут, чтобы заставить пользователя выйти из системы при смене пароля следующим образом:
services.Configure<SecurityStampValidatorOptions>(options =>
options.ValidationInterval = TimeSpan.FromMinutes(15)
);
мне нужно генерировать новый штамп безопасности при каждой смене пароля или это делается автоматически менеджером пользователей?
с использованием ASP.Net Core 2.2