当前位置:编程学习 > JAVA >>

jsp 如何登录三次失败后 系统拒绝登录

jsp 如何登录三次失败后 系统拒绝登录,在用JSP做某个系统时,可限定用户登录次数,如何登录次数超过某个值时,则拒绝用户登录,用Java 或JSP如何做到? --------------------编程问答-------------------- 将账号和登录次数放在服务器的一个Map<用户名,登录次数>结构的静态变量里,这样应该可以吧!每次登录前判断,如果登录失败更新次数!还要定时清空Map --------------------编程问答-------------------- 1、设计一张表,每次登录时存进入;每次登录时按照人的逻辑检查
2、设计一个清楚记录和解锁程序,比如登录错误三次后锁定1小时,到1小时后清除表中记录,并解锁 --------------------编程问答-------------------- 我的想法:
设计一张表:记录失败登陆的次数(error_count)、失败登陆的时间(error_time);
规定失败登陆的时间间隔为5分钟,如果超过5分钟失败登陆重新类型失败登陆次数。
场景:
用户登陆 --> 
if(error_count >=3) 返回不能在登陆;
else {
   登陆失败,
   if(error_time < 5) error_count ++;
   else 设置 error_count =0 并更新记录;
} --------------------编程问答-------------------- 我也感觉应该在数据库里放个字段 或者 像计数器那样计数吧 --------------------编程问答-------------------- 在数据表里面加一个字段,做判断,再设置一个时间取消限制 --------------------编程问答-------------------- 在数据库加个字段,这样就省事,虽然不是很理想不能防断电情况数据库永久锁定,做个监听器每天一个时间恢复用户状态这样来实现防止断电带来的情况 --------------------编程问答-------------------- 放到application里面好不好啊 --------------------编程问答-------------------- 学习,在程序里面实现? --------------------编程问答-------------------- 不要写到数据库,影响速度,登陆判断时这样写 if(){成功}else{失败;记录时间然后+1 第二次进到这里时用上次时间减当前再+1,第三次进这来用第一次时间减当前时间再+1,好比说这是一小时内登陆的次数}总共三次,登陆前js验证用ajax把后台的那个失败次数获取到,如果>=3就 button.style=灰/无      --------------------编程问答--------------------
引用 9 楼 eclipsejob 的回复:
不要写到数据库,影响速度,登陆判断时这样写 if(){成功}else{失败;记录时间然后+1 第二次进到这里时用上次时间减当前再+1,第三次进这来用第一次时间减当前时间再+1,好比说这是一小时内登陆的次数}总共三次,登陆前js验证用ajax把后台的那个失败次数获取到,如果>=3就 button.style=灰/无


补充一下,好比说你设置的是一小时登陆错误3次,你要定个时一小时后要把错误次数变量设为0  --------------------编程问答-------------------- 放到application --------------------编程问答-------------------- 学习了学习了!高深。 --------------------编程问答-------------------- 感觉还是用session方便 --------------------编程问答-------------------- 推荐的做法,用js的cooking来做,不涉及到数据库,减轻了服务器的压力 --------------------编程问答-------------------- 你是指对账号的限制还是对ip的限制?

简单点,以账号和时间为条件,记录登录次数。
1、9、10楼说的已经差不多了。

至于放置的位置,放到哪里自己决定吧。给出建议的朋友也不少了。
app、session和cookie都可以,只是不推荐数据库。
--------------------编程问答-------------------- 可以设置oracle数据库的字段!count统计访问的记录次数,如果查询三次就count=3可以采用java判断这个字段呀!如果等于3那么让他锁定一天! --------------------编程问答-------------------- 放到session中,application中区别用户不方便 --------------------编程问答--------------------
引用 13 楼 walkman_22 的回复:
感觉还是用session方便

如果用户清了缓存呢? --------------------编程问答--------------------
引用 18 楼 zhangjavin 的回复:
引用 13 楼 walkman_22 的回复:
感觉还是用session方便

如果用户清了缓存呢?

不好意思 引错地方了 我是指用COOKIE的做法 --------------------编程问答--------------------
引用 2 楼 driftking 的回复:
1、设计一张表,每次登录时存进入;每次登录时按照人的逻辑检查
2、设计一个清楚记录和解锁程序,比如登录错误三次后锁定1小时,到1小时后清除表中记录,并解锁

登陆的时候把登陆的次数就放入一个表里面是不是有点大材小用啊 --------------------编程问答--------------------
引用 9 楼 eclipsejob 的回复:
不要写到数据库,影响速度,登陆判断时这样写 if(){成功}else{失败;记录时间然后+1 第二次进到这里时用上次时间减当前再+1,第三次进这来用第一次时间减当前时间再+1,好比说这是一小时内登陆的次数}总共三次,登陆前js验证用ajax把后台的那个失败次数获取到,如果>=3就 button.style=灰/无

这样的比较好
我觉得或者直接放在一个全局的,每次有一个其他的用户名登陆,就随机的给他一个变量,然后放在context里面里面,让他递增,等到超过三次的时候,给他一个提示,告诉他不让他登陆的。可以让他保存在一个相应的文件了面
--------------------编程问答--------------------
引用 19 楼 zhangjavin 的回复:
引用 18 楼 zhangjavin 的回复:
引用 13 楼 walkman_22 的回复:
感觉还是用session方便

如果用户清了缓存呢?

不好意思 引错地方了 我是指用COOKIE的做法

cookie不是也被清空了吗? --------------------编程问答-------------------- 在程序里做个计数器。。。或是在注册文件里做个标识,登录一次更新一次。。 --------------------编程问答-------------------- 实现方式一:
session+数据库字段实现

1.sesion中记录用户登录失败的次数。
2.数据库字段记录用户登录3次失败以后需要解锁的时间。例如:12:00登录3次失败,锁定1小时,那么下次可以正常登录的时间就是13:00。当然时间记录方面肯定是带年月日什么的。


那么剩下的你实现锁定就很简单了。每次登录时只需要检查登录锁定时间是否大于当前系统时间,如果是就为锁定状态,不进行登录处理。

实现方式二:
另外还有一种实现方式,为某个session设置单独的失效时间,假设要锁定某用户1小时,那么你就为该用户设置一个session,有效时间1小时,那么在此session存在的时间内,该用户就是被锁定的。 --------------------编程问答-------------------- 如果是正式的系统
1)必须持久化保存,所以将计数器写到数据库是很好的做法
2)登录时,先判断计数器是不是>=3,如果是,直接拒绝
3)如果失败,计数器加1
4)如果成功,计数器清0 --------------------编程问答--------------------
引用 13 楼 walkman_22 的回复:
感觉还是用session方便

那我关了在重新来,不是还可以登录吗?
--------------------编程问答-------------------- session 啊。。。。。 --------------------编程问答-------------------- session 记录登陆次数 --------------------编程问答-------------------- 这种需求是不现实的。我只要知道你的用户名就可以让你用不了这个系统了! --------------------编程问答--------------------
引用 29 楼 bao110908 的回复:
这种需求是不现实的。我只要知道你的用户名就可以让你用不了这个系统了!

确实。 --------------------编程问答-------------------- 我觉得没必要涉及到数据库,用一个计数器就可以解决了吧! --------------------编程问答-------------------- 我同意24#的做法 --------------------编程问答--------------------
引用 24 楼 tt14344 的回复:
实现方式一:
session+数据库字段实现

1.sesion中记录用户登录失败的次数。
2.数据库字段记录用户登录3次失败以后需要解锁的时间。例如:12:00登录3次失败,锁定1小时,那么下次可以正常登录的时间就是13:00。当然时间记录方面肯定是带年月日什么的。


那么剩下的你实现锁定就很简单了。每次登录时只需要检查登录锁定时间是否大于当前系统时间,如果是就为锁定状态,不进行……

好幼稚的想法,浏览器一关闭,你的session就失效。 --------------------编程问答--------------------
引用 29 楼 bao110908 的回复:
这种需求是不现实的。我只要知道你的用户名就可以让你用不了这个系统了!

怎么不现实?使用这种功能的多是网银、支付等网站。特定时间密码连续输入3次不正确,就可以让该用户当天内或者24小时内不再登陆。 --------------------编程问答-------------------- 放数据库里太慢了吧?? --------------------编程问答-------------------- 学习了…… --------------------编程问答--------------------
引用 34 楼 niuniu20008 的回复:
引用 29 楼 bao110908 的回复:
这种需求是不现实的。我只要知道你的用户名就可以让你用不了这个系统了!

怎么不现实?使用这种功能的多是网银、支付等网站。特定时间密码连续输入3次不正确,就可以让该用户当天内或者24小时内不再登陆。


既然是现实的话,就弄吧 --------------------编程问答-------------------- 使用Cookie,这是最好的办法! --------------------编程问答-------------------- 只能持久化了。。。 --------------------编程问答-------------------- 设置一个值等于3当进行验证的时候就-1在判断是否下于,在进行提示 --------------------编程问答-------------------- 这种需求还是很多滴! --------------------编程问答-------------------- 写个静态HashMap,每隔24小时清空一次
里面放用户ID,失败次数
登陆时判断一下失败次数是不是大于3,如果大于3就不允许登陆

Cookie的话 人家清空Cookie就可以在来3次,这样无限
Session的话 人家关闭浏览器再开一个就可以再来3次,无限
数据库的话 可以确保没问题,可是额外增加了数据量
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,