实现登录密码输入错误次数过多,锁定用户账号,前台可以进行解锁的业务(未完善版本)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

工作的第一天,就接到了一个登录锁定与解锁的需求,第一反应,这是什么,我要怎么做,怎么上来就让我写这么难的业务,哈哈。不过万物皆可百度,经过观看网上大佬们的实现方法,经过本人cop.,经过本人的借鉴,满足了需求,直接上代码吧。


一、前台实现解锁

前台就是加了个按钮,可以点击进行事件触发,把锁定的状态给它放开咯
在这里插入图片描述前端不描述太多(本人前端太菜了,怕打脸( ̄ε(# ̄)☆╰╮( ̄▽ ̄///))

二、后台逻辑实现

首先就要梳理清业务的完整流程,既然是登录锁定,登录输入密码就会有两种情况,输入正确和不正确。先讨论正确时会有哪些情况,账号被锁定和未锁定,没有锁定直接进入系统,锁定的时候就要拦截不允许登录了;下边就是密码不正确,大前提肯定是不能登录,然后考虑锁定的状况,如果账号已经锁着了,那就还锁着(后续考虑改进一下,可以经过三十分钟或者一个小时,让其自动解锁),没有锁,进行错误次数增加,达到你规定的错误次数,进行锁定。
大致逻辑是这样

二、步骤

1.数据库

本人实现这个功能,在原来数据库表的情况下,增加了三个字段:last_login_error_time(最后一次登录错误时间),login_error_count(登录错误计数),is_locked(是否锁定):

2.代码实现

直接上代码,不玩虚的:

        String nespwd = request.getParameter("nespwd");
        String code = request.getParameter("code");
        Person person = personDao.findByUserNameAndaesPassword(personName);
        if (code.equals(person.getCode())) {
   
            return "login";
        } else {
   
            person.setCode(code);
            personDao.save(person);
        }
        if (personName != null && nespwd != null) {
   
            Date thisErrorLoginTime = null;        // 修改的本次登陆错误时间
            Integer islocked = 0;             //定义锁定状态
            if (person == null) {
   
                return "login";
            } else if (!person.getAesPassword().equals(nespwd)) {
   
                if (person.getIsLocked() == null) {
   
                    person.setIsLocked(0);
                } else {
   
                    islocked = person.getIsLocked();
                }
                if (person.getLoginErrorCount() == null) {
   
                    person.setLoginErrorCount(0);
                }
                Date date = new Date
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值