帐号禁用后自动解封的实现原理?

J2EE 码拜 9年前 (2015-07-18) 1589次浏览 0个评论

需求是用户帐号被禁用多少天以后,自动在之前禁用的时间点进行解封,例如7月1日上午10点被禁用7天,然后需要在7月7号的上午10点进行自动解封,求实现思路,感谢!

20分

#1

新建一个表 user_block,存储 block 信息:
id, user_id, block_start_time, block_time
登录的时候,同时检查 user_block 表中这个用户的 block 信息,如果在 block 时间中,那么不允许登录。

使用一个 scheduler 任务,定期扫描 user_block 表,把过期的 block 信息删除。

#2

回复楼:

请问这个任务是在数据库里设置好,还是通过程序来设置定时扫描好呢

#3

回复1楼:

表的设计我清楚,但如果这样实现,后台管理在对用户信息进行查看的时候,他的状态也许不是最新的,不可能在每次查询的过程中再次进行判断和更新,同时这样也没有实现定时自动解封的效果,期待回复,感谢!

20分

#4

用户表中应该有用户状态字段,控制用户是否可以登录;

禁用:设置状态为不可登录;一个专用的表(禁用信息表)记录禁用结束时间
解封:定时任务完成,比如设置为1分钟执行一次的定时任务,查询禁用信息表,到达禁用结束时间,将该用户状态位改为可以登录

#5

封了之后启动定时器…

#6

回复2楼:

数据库中创建一个存储过程,再创建一个计划任务,定时执行这个存储过程即可

#7

回复2楼:

程序定时扫描

#8

回复3楼:

block 信息加载到内存就可以了,这样不用每次都查数据库。

#9

用定时任务吧,quartz就不错
5分

#10

我是这方面的小白,我只说一下自己的想法哈,禁用账号时间+禁用天数 = 解封时间,然后把这个解封时间存到一个字段,用户登录时判断下这个时间就知道解封没有啊,如果字段不存在或当前时间大于解封时间,就可以把这个字段置为空。

#12

回复8楼:

性能上会有所折扣,及时性不够强,但也是一种可采纳的解决办法,感谢!

#13

回复9楼:

定时任务太耗性能,而且及时性不强,根据需求暂且换了一种解决方案。

#14

回复10楼:

大众的实现思路是这样的。

#15

回复14楼:

求更详细的说明,

5分

#16

既然禁用开始时间和结束时间都清楚,那么可以在登录时直接判断当前时间是否处于禁用时间段内。
禁用状态也可以根据这个逻辑处理。

#17

没必要搞什么定时的,我的想法是
写个更新用户表能否登陆的状态的方法,当用户登陆的时候可以调用这个方法更新下状态(不过也可以用楼上的,再写个方法,判断是否超过解封时间),实现是否允许登陆
楼主要查看用户管理的信息,在查看之前调用这个方法,更新完之后再进行查看

#18

数据库里面记录下是否被禁用,以及 禁用日期,每次登录时 检查下 禁用时间 是否过期,如果过期了,就把数据库里面的禁用 记录 删掉,前提是 登陆的账号密码正确,如果 不正确,则吧数据库里面的 禁用日期更新为当当前的登录时间..

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明帐号禁用后自动解封的实现原理?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!