Нужно ли обновлять штамп безопасности вручную, когда пользователь запрашивает изменение пароля, или он обрабатывается автоматически менеджером пользователей? - PullRequest
1 голос
/ 25 сентября 2019

Как заявляет 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

...