当前位置:网站首页>5次登陆失败,限制登录实践
5次登陆失败,限制登录实践
2022-06-23 10:07:00 【cfcoolya】
一 限制登录实践
设计思路
1.0 背景
最近在开发辽事通机构开放管理平台入驻功能模块功能。
该模块涉及到注册、登录、入驻等功能。
涉及到的技术有SpringBoot、Mybatis、Spring Security、Jwt、Npm、vue-cli、vue-router、vuex、element-ui
1.1 思路
后端思路:
登录失败有以下这几种情况:
验证码失效
验证码错误
用户密码输入错误
以上三种情况层层递进,第三种的话是属于spring security层面的认证。所以我们需要在第三种前去判断登录失败几次,如果超过5次就直接限制,无法进入第三种认证。
1.2 如何实现?
添加一张 "用户系统访问表" 。
该表记录用户账号、登录IP、登录地点、浏览器类型、访问时间、登录状态成功或者失败。
用户登录系统不管是失败还是成功都记录在这张表中。
当要进入第三种用户认证前,进行五次失败校验。
1.利用分页 用户名+失败状态倒序查询
2.当查询结果有5,这时候我们要判断是否在一天内输入失败五次。
long firstTime = loginList.get(4).getLoginTime().getTime();
long lastTime = loginList.get(0).getLoginTime().getTime();
long nowTime = new Date().getTime();
long limitTime = Integer.parseInt(policys[1]) * 60 * 60 * 1000;//限制一天
if((firstTime + limitTime > lastTime) && (lastTime + limitTime > nowTime)){"失败次数过多,已被限制登录"));
throw new CustomException("失败次数过多,已被限制登录");}
意思就是说 如果找出来 5条失败的登录记录,我们要判断是否是在一天内失败的次数。
那么最早那条记录+一天>最晚那条记录,最晚那条记录+一天>现在,这两个条件都成立就说明是一天失败的次数。
边栏推荐
- Find minimum in rotated sorted array
- 汇编语言中断及外部设备操作篇--06
- 我被提拔了,怎么和原来平级的同事相处?
- STM32F1与STM32CubeIDE编程实例-红外寻迹传感器驱动
- Gstore weekly gstore source code analysis (IV): black and white list configuration analysis of security mechanism
- ICLR 2022 | 视频中的动态卷积TAdaConv以及高效的卷积视频理解模型TAdaConvNeXt
- 个人博客系统毕业设计开题报告
- AI系统前沿动态第38期:谷歌已放弃TensorFlow?;训练大模型的四种GPU并行策略;LLVM之父:模块化设计决定AI前途
- 2021-05-11static关键字
- laravel8 beanstalk 使用说明
猜你喜欢

IPv6 的速度比 IPv4 更快?

Numerical calculation method

Go language JSON processing

数学分析_笔记_第2章:实数与复数

Gorm 高级查询

Gorm advanced query

Unity技术手册 - 生命周期LifetimebyEmitterSpeed-周期内颜色ColorOverLifetime-速度颜色ColorBySpeed

Build a security video monitoring platform using Huawei cloud ECS server

Mysql 的Innodb引擎和Myisam数据结构和区别

线程池在项目中使用的心得体会
随机推荐
Lying trough, the most amazing paper artifact!
一个优秀速开发框架是什么样的?
Build a security video monitoring platform using Huawei cloud ECS server
2021-04-16 method overload parameter transfer
sql根据比较日期新建字段
2021-05-12接口的定义与实现
2022高考季征文获奖名单公布
beanstalk 常用方法、说明
2021-04-12 the first implementation of linked list!!!
汇编语言中断及外部设备操作篇--06
NFTs、Web3和元宇宙对数字营销意味着什么?
Form repeated submission problem
Tencent tangdaosheng: practice "science and technology for the good" and promote sustainable social value innovation
Spring recruitment interview experience summary (technical post)
安装typescript环境并开启VSCode自动监视编译ts文件为js文件
2021-05-12 interface definition and Implementation
laravel8 beanstalk 使用说明
Install the typescript environment and enable vscode to automatically monitor the compiled TS file as a JS file
Unity技术手册 - 生命周期LifetimebyEmitterSpeed-周期内颜色ColorOverLifetime-速度颜色ColorBySpeed
Developer, you may have some misunderstandings about cloud computing