首页 > 编程语言 >Java 登录错误次数限制,用户禁登1小时

Java 登录错误次数限制,用户禁登1小时

时间:2024-05-25 14:33:23浏览次数:27  
标签:COUNT Java 登录 phoneNum CAPTCHA USER ERROR UserCacheNames 禁登

手机号验证码登录,验证码输入错误次数超5次封禁

@Override
    public boolean checkCaptcha(String phoneNum, String captcha) {

        String codeNum = (String) redisTemplate.opsForValue().get(UserCacheNames.USER_CAPTCHA + phoneNum);

        if (codeNum == null) {
            throw new WangyaoBusinessException("验证码已过期!请重新发送");
        }
        if(RedisUtil.hasKey(UserCacheNames.USER_CAPTCHA_ERROR_COUNT + phoneNum)){
            Integer errorCou = (Integer) redisTemplate.opsForValue().get(UserCacheNames.USER_CAPTCHA_ERROR_COUNT + phoneNum);
            if(errorCou>5){
                throw new WangyaoBusinessException("验证码错误次数过多,封禁中请1小时后再试!");
            }
        }
        if (!captcha.equals(codeNum)) {
            // 验证码错误 做错误次数限制 封禁1小时
            if (!RedisUtil.hasKey(UserCacheNames.USER_CAPTCHA_ERROR_COUNT + phoneNum)) {
                redisTemplate.opsForValue().set(UserCacheNames.USER_CAPTCHA_ERROR_COUNT + phoneNum, 1, 3600, TimeUnit.SECONDS);
            } else {
                Integer errorCount = (Integer) redisTemplate.opsForValue().get(UserCacheNames.USER_CAPTCHA_ERROR_COUNT + phoneNum);
                if(errorCount>5){
                    redisTemplate.opsForValue().set(UserCacheNames.USER_CAPTCHA_ERROR_COUNT + phoneNum, errorCount+1);
                }else {
                    throw new WangyaoBusinessException("验证码错误次数过多,请稍1小时后再试!");
                }
            }
            throw new WangyaoBusinessException("请输入正确验证码!");
        }else {
            RedisUtil.del(UserCacheNames.USER_CAPTCHA_ERROR_COUNT + phoneNum);
        }
        return true;

    }

效果
在这里插入图片描述

标签:COUNT,Java,登录,phoneNum,CAPTCHA,USER,ERROR,UserCacheNames,禁登
From: https://blog.csdn.net/qq_41867674/article/details/139196852

相关文章

  • JAVA计算机毕业设计基于SpringBoot的在线古玩市场系统的设计与实现(附源码+springboot+
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网的迅猛发展和电子商务的普及,传统行业纷纷寻求数字化转型以适应市场的新需求。古玩市场作为一个历史悠久、文化底蕴深厚的行业,在数字化浪潮......
  • 红黑树基于Java代码的剖析
    红黑树是一种自平衡的二叉查找树,通过添加颜色属性和旋转操作来保证树的平衡性,从而在最坏情况下仍能提供对数时间复杂度的插入、删除和查找操作。本文通过对一段红黑树的Java代码进行剖析,详细讲解其插入和删除操作是如何实现的,以及这些操作是如何利用红黑树的性质来维持平衡......
  • 深入理解Java的垃圾回收机制(GC)实现原理
    深入理解Java的垃圾回收机制(GC)实现原理Java的垃圾回收机制(GarbageCollection,GC)是其内存管理的核心功能之一。通过GC,Java自动管理对象的生命周期,回收不再使用的对象所占的内存空间。本文将详细探讨GC的实现原理、不同算法的细节以及其在JVM中的应用。1.垃圾回收的基本......
  • web前端课程设计——重庆旅游7页 HTML+CSS+JavaScript
    ......
  • web前端网页课程设计大作业 html+css+javascript天津旅游(11页) dw静态旅游网页设计实
    ......
  • Java对象头你不知道的地方
    在Java中,每个对象都拥有一个对象头,这些对象头包含了关于对象的一些元数据信息。对象头(Header)包含2部分(若为数组,则包含3部分):一、第一部分为MarkWord,用于存储对象自身的运行时数据,如哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。在32位虚拟......
  • JavaScript入门指南:从零开始你的编程之旅
        JavaScript是现代web开发不可或缺的一部分,作为一种强大且灵活的编程语言,它可以在浏览器中运行,为网页添加互动功能。无论你是完全的初学者,还是有其他编程语言的基础,本文将引导你从零开始学习JavaScript。我们将涵盖基础知识、关键概念和实践技巧,帮助你迅速上手并......
  • Java方法详解
    Java方法详解1、何谓方法Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方法的原则方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法......
  • 如何判断Java代码中异步操作是否完成
    在许多应用程序中,我们经常使用异步操作来提高性能和响应度。在Java中,我们可以使用多线程或者异步任务来执行耗时操作,并且在后台处理过程完成后获取结果。但是,在使用异步操作时,我们通常需要知道异步任务何时完成,以便进行下一步的操作。本篇文章将介绍几种常见的方法来判断Java......
  • 前端 用账号密码登录的时候 对密码进行加密 【最佳解决方案】用bcrypt.js 或者 crypto
    1、在后台管理的项目中或者其他项目用到账号密码登录的功能,我们需要对密码进行一个密码的操作 2、我们可以使用第三方的库去实现登录密码加密的功能有两个JS库 bcrypt.js或者crypto-js3、方案一使用了bcrypt.js库对密码进行加密。首先,生成一个salt,它是一个随......