java做帐户登录失败锁定
对于连续失败登录应用系统5次的帐号,需锁定该帐号至少30分钟不允许登录。
这里也用简单的map集合进行判定,功能能实现,但并不是很完美,不用更改数据库的表字段
1、首先建立一个用户登陆失败的实体类
public class UserErrorLoginRecord {
//登录时间
private Date longinTime;
//错误次数
private Integer errorNum;
}
2、再登陆的contorller里
private static Map<String,UserErrorLoginRecord> LOG_MAP = new HashMap<String,UserErrorLoginRecord>();
3、再判断用户登陆系统的具体方法里
UserErrorLoginRecord userError = null;
boolean flag = true; //默认每次进入都是true,当输入失败5次后,设置为false,直接锁定当前账户30分钟。
用户每次登陆失败就进行存储一次,如下
userError = LOG_MAP.get(username);
if (userError == null) {
userError = new UserErrorLoginRecord();
userError.setErrorNum(1);
userError.setLonginTime(new Date());
LOG_MAP.put(username, userError);
}else{
int loginNumber = userError.getErrorNum();
userError.setErrorNum(loginNumber + 1);
LOG_MAP.put(username, userError);
}
userError = LOG_MAP.get(username);
if(userError.getErrorNum() < 4){
map.put("msg","用户名密码错误");
}else{
map.put("msg","对不起,您的账户已锁定,请于30分钟后再试");
}
每次进入登陆方法时候先判断当前用户的登陆错误次数,
minute = DateUtil.compareDate(new Date(), userError.getLonginTime()); //判断当前登录时间跟上次登录时间相差分钟数
if(userError.getErrorNum() > 4){
if(minute <= 30){
flag = false;
}else{
这里还是写判定当前账户是否正确的代码
LOG_MAP.remove(user.getUsername()); //登陆成功后,将此账户的错误记录从map里移除
之后进行正常登陆成功后的页面跳转
}
}else{
这里还是写判定当前账户是否正确的代码
LOG_MAP.remove(user.getUsername()); //登陆成功后,将此账户的错误记录从map里移除
之后进行正常登陆成功后的页面跳转
}
原理很容易理解,这里贴出了部分代码,又不懂的可以评论随时回复解答。
其实可以借助redis实现下过会更好。
java做帐户登录失败锁定的更多相关文章
- 该帐户当前被锁定,所以用户sa登录失败。系统管理员无法将该帐户解锁
运行程序时抛出异常: 基础提供程序在 Open 上失败,详细信息:该帐户当前被锁定,所以用户sa登录失败.系统管理员无法将该帐户解锁. 1.考虑连接字符串是否正常 登录数据库,发现登录报同样的错误 = ...
- linux多次登录失败锁定账户
2021-07-22 1.配置对系统进行失败的ssh登录尝试后锁定用户帐户 # 配置登录访问的限制 vi /etc/pam.d/system-auth 或者 vi etc/pam.d/password ...
- SharePoint2013切换帐户登录菜单
SharePoint2013帐户姓名显示的地方没有切换帐户的菜单,这个功能对于终端用户是可有可无的,但对于sharepoint管理员或sharepoint开发人员来讲,却是一个很重要的菜单,由于经常要 ...
- Linux使用pam_tally2.so模块限制登录失败锁定时间
关于PAM Linux-PAM (Pluggable Authentication Modules for Linux)可插拔认证模块. https://www.cnblogs.com/klb561/ ...
- SharePoint2013切换帐户登录菜单显示
SharePoint2013帐户姓名显示的地方没有切换帐户的菜单,这个功能对于终端用户是可有可无的,但对于sharepoint管理员或sharepoint开发人员来讲,却是一个很重要的菜单,由于经常要 ...
- 该帐户当前被锁定,所以用户 'sa' 登录失败。系统管理员无法将该帐户解锁。
用WINDOWS账户登录查询分析器,输入一下语句并执行: ALTER LOGIN sa ENABLE ; GO ALTER LOGIN sa WITH PASSWORD = '你的新密码' unloc ...
- 帐户当前被锁定,所以用户 sa 登录失败。系统管理员无法将该帐户解锁 解决方法
ALTER LOGIN sa ENABLE ; GO ALTER LOGIN sa WITH PASSWORD = 'password' unlock, check_policy = off, che ...
- SQL server数据库的密码策略与登录失败锁定策略
SQL server数据库本身没有密码复杂度策略设置,它是使用Windows操作系统的校验函数来校验账户密码的,所以查看SQL server数据库密码复杂度需要结合操作系统本地安全策略的密码策略来看. ...
- ORA-28000 帐户已被锁定问题处理
1.问题描述 应用监控程序报警ORA-28000,PL/SQL无法登陆数据库 2.问题分析 oracle11g中默认在default概要文件中设置了 “FAILED_LOGIN_ATTEMPTS=10 ...
随机推荐
- UINavigationController实现全屏滑动返回功能
说明: UINavigationController默认在push出的控制器中都有边沿滑动返回功能,但是只能从屏幕左边滑才能返回,若从屏幕中间画并没有效果.下面实现全屏滑动功能. 探究: 系统默认能够 ...
- java线程之生产者消费者
看了毕向东老师的生产者消费者,就照着视频参考运行了一下,感觉还好 这个值得学习的是条理特别清晰: ProducterConsumerDemo.java中,一个资源类Resources,生产者消费者都可 ...
- Redis 学习数据类型
该文使用centos6.5 64位 redis-3.2.8 [root@localhost bin]# netstat -tunpl |grep 6379 查看redis 是否启动成功 一.Stri ...
- Hadoop1.0.3环境搭建流程
0x00 大数据平台相关链接 官网:http://hadoop.apache.org/ 主要参考教程:http://www.cnblogs.com/xia520pi/archive/2012/05/1 ...
- Angular2组件与指令的小实践——实现一个图片轮播组件
如果说模块系统是Angular2的灵魂,那其组件体系就是其躯体,在模块的支持下渲染出所有用户直接看得见的东西,一个项目最表层的东西就是组件呈现的视图.而除了直接看的见的躯体之外,一个完整的" ...
- jvm系列(七):jvm调优-工具篇
16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化.工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗 ...
- OpenCv 2.4.9 (一) Mat基础结构&如何遍历图片
前言 因为对图像方面感兴趣,所以有空学学OpenCV的使用,并且希望以此为引子,带领自己入门图像领域. 先post上几个参考网站,上面有完整源码: http://docs.opencv.org/2.4 ...
- Spring源码解析三:IOC容器的依赖注入
一般情况下,依赖注入的过程是发生在用户第一次向容器索要Bean是触发的,而触发依赖注入的地方就是BeanFactory的getBean方法. 这里以DefaultListableBeanFactory ...
- Javascript基本语句
1.单行语句是大家用的最多的,下面讲讲复合语句的用法. 用一对花括号括起来,处理的时候,可以用单句来对待.这样做的好处是避免复合语句中语句互相干扰执行. 语法如下: { var x=1111: var ...
- angular.js之作用域scope'@','=','&'
<!doctype html> <html ng-app='myApp'> <head> </head> <body> <script ...