/*** 移出非安全登录记录

*

*@paramindex_*/

private voidremoveJPTLoginSecurity(String ip, String loginKey) {//移出非安全记录索引

nonSecurityIndex.remove(ip);

nonSecurityIndex.remove(loginKey);

}/*** 如果超出非安全登录记录的保存范围,则自动删除以往数据,非安全记录范围个数为30个*/

private voidoutJPTLoginSecurity() {if (null != nonSecurityIndex && nonSecurityIndex.keySet().size() > 30) {

nonSecurityIndex.clear();

}

}privateJPTLoginSecurity getSecurity(String ip, String loginKey) {

JPTLoginSecurity security= null;if (null ==nonSecurityIndex){return null;

}

security=nonSecurityIndex.get(ip);if (null ==security){

security=nonSecurityIndex.get(loginKey);

}returnsecurity;

}/*** 获取登录账户是否被锁定

*

*@paramindex_

*@return*@throwsException*/

private boolean isLocked(String ip, String loginKey) throwsException {

JPTLoginSecurity security=getSecurity(ip, loginKey);if (null ==security){return false;

}

Calendar c=Calendar.getInstance();

Calendar now=Calendar.getInstance();

c.setTime(security.getLastLoginTime());if (0 < security.getLocked()) {//当前账号被锁定

if (c.before(now)) {//超过锁定时间,可再次登录

security.setLocked(0);//对账号进行解锁

security.setLoginCount(1);

security.setLastLoginTime(newDate());return false;

}return true;//锁定用户未超过锁定时间,不可登录

}return false;

}/*** 验证用户是否安全,一次连续尝试只能尝试10次(默认5分钟为一次连续尝试) 如果用户在一次尝试中连续尝试了10次以上则帐户被锁

*

*@paramip

* ip地址

*@paramloginKey

* 用户登录方式

*@paramindex_

* 非安全记录索引

*@return*@throwsException*/

private boolean isSafe(String ip, String loginKey) throwsException {//思路://1.如果索引存在,则直接计算//2.如果索引不存在,调用outJPTLoginSecurity()计算是否超出记录范围,如果未超出则根据ip和loginKey生成非安全记录

outJPTLoginSecurity();

JPTLoginSecurity security= null;if (null ==nonSecurityIndex) {//nonSecurityIndex = new HashMap();

nonSecurityIndex = new ConcurrentHashMap();

}else{

security=getSecurity(ip, loginKey);

}//TODO 判断用户是否安全

if (null ==security) {

security= newJPTLoginSecurity();

security.setLoginKey(loginKey);

nonSecurityIndex.put(ip, security);

nonSecurityIndex.put(loginKey, security);

}

Calendar c=Calendar.getInstance();

Calendar now=Calendar.getInstance();

c.setTime(security.getLastLoginTime());

c.add(Calendar.MINUTE,5);if(c.after(now)) {//说明当前是连续登录

if (security.getLoginCount() < 10) {

security.setLoginCount(security.getLoginCount()+ 1);return true;

}else{

security.setLocked(1);

c=Calendar.getInstance();

c.setTime(newDate());

c.add(Calendar.MINUTE,10);

security.setLastLoginTime(c.getTime());return false;

}

}else{

security.setLoginCount(1);

security.setLastLoginTime(newDate());return true;

}

}

mysql启用登陆失败锁定账号_登陆失败账号锁定相关推荐

  1. mysql 如何添加子账号_创建子账号

    创建子账号 上一节介绍了如何和 MySQL 建立连接登录到 MySQL,并且对初始化密码进行了修改,本节主要介绍如何新建一个子账号,并且使用子账号登录 MySQL. 1. 使用 root 账号登录 M ...

  2. python 登陆网站图片验证_登陆需要密码以及图片验证的网站 如知乎

    [实例简介] 登陆知乎 这样需要输入密码以及验证图片的网站 [实例截图] 无.. [核心代码] def land_zhihu(url, id, password): opener = makeMyOp ...

  3. 计算机考研失败了还能找工作吗,考研失败了怎么办_考研失败还能找工作吗

    在大四时,并不是每一位同学都下定决心要直接找工作就业.还有一部分同学会选择出国深造或升学考研等,但众所周知,升学考研存在一定的风险性,一旦考研失败,还是要面对严峻的就业压力.这使得不少同学十分彷徨,不 ...

  4. python123怎么注销账号_怎么注销账号

    已认真阅读完所有条例,并已取消关联第三方社交账号,请求注销注销账号. 帐号注销后,原帐号使用者将无法再通过知乎网.知乎移动客户端等方式登录此帐号,被注销帐号的个人资料将会被重置,注销前请自行备份帐号的 ...

  5. 可口可乐市场调查失败的原因_可口可乐失败案例

    1985 年 4 月 23 日,可口可乐公司董事长罗伯特 • 戈伊朱埃塔宣布了一项惊人的决定.他宣 布经过 99 年的发展,可口可乐公司决定放弃它一成不变的传统配方,原因是现在的消费者 更偏好口味更甜 ...

  6. javaweb通过iis实现域账号免登陆_聊天小程序的Java实现

    登陆界面 注册账号 找回密码 重设密码 聊天界面 多人聊天 一. 设计任务 1.1设计意义 <Java基础入门>课程设计是对学生的一种全面综合训练,它包括问题分析,用户界面设计,程序设计基 ...

  7. linux 配置使用ftp 使用账号密码登陆失败

    1.查看linux是否安装ftp 若返回ftp的版本信息,则标志着已经安装过ftp,可以根据需求判断是否卸载,卸载命令 rpm -e vsftp 2. 安装ftp yum install -y vsf ...

  8. 模拟QQ登陆,输入账号与密码,如果账号与密码正确则显示登录成功, 如果失败则重新登录,并显示登录错误几次,如果登录错误三次则程序结束登录失败。

    模拟QQ登陆,输入账号与密码,如果账号与密码正确则显示登录成功,如果失败则重新登录,并显示登录错误几次,如果登录错误三次则程序结束登录失败. public class Test3 { public s ...

  9. 解决Navicat使用账号密码登陆Oracle数据库提示【密码已过期,请输入新密码】【或账号已被锁定】

    一.问题描述 打开Navicat使用对应的账号密码登陆Oracle时,弹出提示框[密码已经过期,请输入新密码]:但是自己按照提示输入正确的旧密码和设置对应的新密码后无法修改成功提示[ORA-01017 ...

最新文章

  1. 湖南省第6届程序大赛第3题 数字整除
  2. python使用函数目的_Python函数的概念和使用
  3. Oracle远程连接
  4. knife4j导出html有误,knife4j无法生成完整的响应说明
  5. 解决微信0day上线CobaltStike的几个问题
  6. 奇妙的证明 —— 0! = 1(a^0=1)
  7. 读书摘要——《凌波微步-软件开发警戒案例集》
  8. 机器学习 python 随机抽样random sampling 代码
  9. 输入电容及DCM-CCM-QR变压器计算
  10. VS 报错“无法解析的外部符号” 情况1
  11. 【笔记分享】Android TV 红外蓝牙遥控器添加
  12. java poodle,Java http客户端和POODLE
  13. 图形驱动程序和显卡驱动什么区别_电脑游戏显卡和专业图形显卡存在的区别
  14. Pulsar官方文档翻译-概念和架构-多租户(Multi Tenancy)
  15. Linux下打开word等office文件(openoffice安装)
  16. 程序设计基础c语言邹启明,【基础强化】2020年秋季学期程序设计C语言项目顺利结课...
  17. latex的图的排列方法_latex多幅图片排列 2*2示例
  18. 系统集成项目管理工程师复习方法:思维导图辅助记忆
  19. 联想企业科技集团发布系列白皮书,“新IT”为高质量发展注入“新动能”
  20. 算法 2.3.15 螺丝和螺帽

热门文章

  1. 【Konva入门教程】1、简单例子
  2. 【Transformer】浅谈 Transformer-based 模型中的位置表示
  3. 3、Python 中文分词组件Jieba
  4. IntelliJ IDEA 编译Java代码时,中文乱码问题
  5. [hwl]限制只能输入中文或英文姓名的正则表达式
  6. CurSor安装教程
  7. Arduino通过继电器控制电机(5V小马达)ESP8266-12F同理(小白初学)
  8. 每日总结之搜索1.2
  9. 走两步!AI通过步态诊断帕金森;从入门到如土·AI绘画中文指南;超好用的视频补帧软件;YOLO7人脸检测实现;前沿论文 | ShowMeAI资讯日报
  10. python祝福代码_Python 将 QQ 好友头像生成祝福语的实现代码