用户输入错误验证码错误三次后,锁定该用户3分钟 redis 使用案列

一  用户输入错误验证码错误三次后,锁定该用户3分钟 redis 使用案列

    @ResponseBody
    @RequestMapping("sendCode")
    public String sendCode(String tel){
        int code= (int) (Math.random()*999999);
        // 存储60秒
        int time=60;
        redisTemplate.opsForValue().set(tel,code+"",time, TimeUnit.SECONDS);
        System.out.println("电话:"+tel+"验证码:"+code);
       // 这里采用的工具类发送手机
      //  String send = SendTeleMsgUtil.send(tel, code + "", time);

        return  code+"";
    }
  


@PostMapping("login")
    public String login(String tel,String code){
        // 判断手机号
        Boolean b = redisTemplate.hasKey(tel);
        // 固定常量
        String count="_LOGIN_COUNT";
        String user_lock="_USER_LOCK";
        if (b){
            // 判断验证码是否正确
            if (code.equals(redisTemplate.opsForValue().get(tel))){
                // 判断该用户是否被锁定
                if (!redisTemplate.hasKey(user_lock)){
                    // 不存在则放行
                    return "redirect:list";
                }
            }else {
                // 失败记录次数  第一次设置 值为1 存在60秒 与验证码存在时间同步
                Boolean first = redisTemplate.opsForValue().setIfAbsent(tel+count, 1,60,TimeUnit.SECONDS);
                if (!first){
                    // 第二次自增 1
                    redisTemplate.opsForValue().increment(tel+count);
                    if ((int)redisTemplate.opsForValue().get(tel+count) > 3){
                        // 失败超过3次  锁定用户 3分钟
                        redisTemplate.opsForValue().set(tel+user_lock,1,3,TimeUnit.MINUTES);
                        System.out.println("已上锁");
                    }
                }
            }
        }
        // 登陆失败
        //System.out.println(redisTemplate.opsForValue().get(tel+count)+"------------------------");
        return "login";
    }

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值