5次登陆失败,限制登录实践

一 限制登录实践

设计思路

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条失败的登录记录,我们要判断是否是在一天内失败的次数。

那么最早那条记录+一天>最晚那条记录,最晚那条记录+一天>现在,这两个条件都成立就说明是一天失败的次数。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值