我有一个 ASP.NET 的MVC应用程序,并使用 ASP.NET 身份来管理用户(锁定/解锁状态(。
当我查询数据库中的用户时,我想显示用户的锁定/解锁状态已更新。我怎样才能做到这一点?
考虑以下场景:John Doe 正在尝试登录,但在 3 次错误密码尝试后被锁定;他的LockoutEndDate
列设置为3 小时后。
同时,系统管理员查询用户,他希望看到锁定的用户,正如预期的那样,John Doe
在该列表中。
John Doe 在 5 小时内没有返回系统,但必须显示为解锁用户,因为锁定时间为 3 小时。
我正在考虑的解决方案是在SQL Server代理中执行脚本作业以保持锁定/解锁状态更新。我正在寻找更好的方法。
用户已被 WrongPasswordTrysReach 锁定或由管理员手动锁定,我们希望在报告中区分这种情况。
为什么你甚至需要"保持解锁状态"是最新的??只需根据以下LockoutEndDate
做出决定:
- 如果
LockoutEndDate
为 NULL --> 从未设置过锁定,则用户处于活动状态 - 如果
LockoutEndDate
已设置且尚未过期(now(( <=LockoutEndDate
( -->用户被锁定 - 如果设置了
LockoutEndDate
,但它已过期(now((>LockoutEndDate
( -->用户再次处于活动状态
不需要任何标志并使用 SQL Server 代理作业更新这些标志.....