问题描述
如题,我现在想法是,建立一张登录失败表,里面有登录失败的日期。登录的时候,如果今天有三条记录了,那么就不允许登录了。大家看看我这个想法是否正确,还有没有更好的实现方法。我用的是spring security ,如果里面有类似的功能,就更好了。知道的,说一下,谢谢。还有个问题,如果用180天未登录,就锁死用户,这个应该如何实现。我现在的想法是,数据库里面设置定时任务,每天或者每周执行,和最后登录日期比较。大家提提意见。 问题补充:如果你登录成功一次,就把今天登录失败的记录都删除掉,恩,实际操作的时候遇到了这个问题,这样解决的。180天那个最后是最后登录日期+180的方法解决的。Rainbow702 写道
解决方案
对于你第一个需求,我做过类似的,我的数据库种也有一张表 专门记录失败次数,但是我的需求更多,是在一段时间内登陆3此失败的,比如一小时这样的。我的在前台是用cookie记录的,cookie不是有时间限制么,我就设置一小时,你的话可以设置一天,这样的话就不用老是用数据库读取时间。 假如你觉得cookie可以被关闭,这个方法不好,那我告诉你,现在不用cookie的web应用基本不可能了,连你系统的很多基本功能都完成不了,所以不必担心此问题,另外,你可以判断用户是否禁用了cookie。 还有,你第二个需求 不要用每天定时任务,因为会耗费大的内存开销。你就记录他最后一次登陆时间,然后手动算出 logintime+180天这个时间。
解决方案二:
不用这么麻烦 建两个字段 一个登录日期 一个登陆错误次数 日期不相同 错误次数是1 日期改为当时日期 ; 相同 错误次数+1
解决方案三:
引用如题,我现在想法是,建立一张登录失败表,里面有登录失败的日期。登录的时候,如果今天有三条记录了,那么就不允许登录了。这个不行的吧,如果用户先登陆失败一两次,但第三次他登陆成功了,接着,他又想登陆的时候,如果第一次又失败了,那么此时,表中就有三条记录了,那么用户就无法登陆了,但这是不合理的。我觉得可以这么设计:表中用一个字段来记录最后一次登陆时间,再用另一个字段来记录失败的次数,若登陆成功,则将登陆失败次数清零。180锁定用户的那个法子应该是可行的,Quartz + Spring 可以设置定时任务的.
解决方案四:
这么做可以啊。还可以定期清除旧数据,防止数据越来越多。180天未登录也好做,给用户表加个字段,记录最后登录成功的时间就可以了。