Как проверить атрибут пользователя каждый раз, когда пользователь проходит через обработчик авторизации в Net Core 2.0 - PullRequest
0 голосов
/ 02 ноября 2018

У меня локальная аутентификация пользователя и срок действия пароля должен истечь через 20 дней. Я добавил атрибут LastPasswordChangedDate в ApplicationUser и написал функцию, чтобы проверить, не истек ли срок действия пароля. Не могли бы вы порекомендовать мне, какую задачу мне следует переопределить для выполнения проверки пароля каждый раз, когда пользователь проходит через обработчик авторизации?

    public IActionResult CheckUserPasswordExparation(ApplicationUser appUser, string returnUrl)
{
    if (appUser.LastPasswordChangedDate.AddDays(PasswordExpireDays) < DateTime.Now)
    {
        return RedirectToAction("ChangePassword", "Manage");
    }
    return RedirectToAction(returnUrl);
}

Я проверяю время жизни пароля в нескольких важных функциях. Я также скрываю меню. Я думаю, что это только обходной путь. Я все еще ищу. Когда я найду решение, я дам знать. Я добавил эту ветку на форум, потому что пока я не доволен своим решением.

1 Ответ

0 голосов
/ 05 ноября 2018

Чтобы проверить, истек ли пароль пользователя, вы можете позвонить CheckUserPasswordExparation в процессе входа в систему. Нет необходимости вызывать его в Authorize Handler, который будет вызываться каждый раз для доступа к Authorized Resources.

Кроме того, находясь в AuthorizationHandler, вы не могли позвонить RedirectToAction. Вы можете звонить context.Fail(); в HandleRequirementAsync только после истечения срока действия пароля, чтобы указать, что авторизация не удалась.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...