我有本地用户身份验证,密码必须在20天后过期。我在ApplicationUser中添加了属性LastPasswordChangedDate,并编写了一个函数来检查密码是否未过期。您能告诉我,每次用户通过授权处理程序时,我应该覆盖什么任务来执行pasword检查吗?
public IActionResult CheckUserPasswordExparation(ApplicationUser appUser, string returnUrl)
{
if (appUser.LastPasswordChangedDate.AddDays(PasswordExpireDays) < DateTime.Now)
{
return RedirectToAction("ChangePassword", "Manage");
}
return RedirectToAction(returnUrl);
}
我正在检查几个关键函数的密码生存期。我还隐藏了菜单。我认为这只是一个变通办法。我还在找。当我找到解决方案时,我会告诉你的。我在论坛上添加了这个帖子,因为目前我对我的解决方案不满意。
为了检查用户的密码是否过期,可以在登录过程中调用CheckUserPasswordExparation
。在CCD_ 2中不需要调用这个,每次访问CCD_。
此外,在AuthorizationHandler
中,您无法调用RedirectToAction
。您只能在密码过期时在HandleRequirementAsync
中调用context.Fail();
以指示授权失败。