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

手机号验证码登录,验证码输入错误次数超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;

    }

效果
在这里插入图片描述

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 以下是一个简单的Java代码示例,它限制用户登录尝试的次数,并检查其凭据是否正确: ```java import java.util.Scanner; public class Login { private static final int MAX_ATTEMPTS = 3; private static final String USERNAME = "admin"; private static final String PASSWORD = "password"; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int attempts = 0; boolean loggedIn = false; while (attempts < MAX_ATTEMPTS && !loggedIn) { System.out.println("Enter username: "); String username = scanner.nextLine(); System.out.println("Enter password: "); String password = scanner.nextLine(); if (username.equals(USERNAME) && password.equals(PASSWORD)) { loggedIn = true; System.out.println("Login successful!"); } else { attempts++; System.out.println("Invalid username or password. Attempts remaining: " + (MAX_ATTEMPTS - attempts)); } } if (!loggedIn) { System.out.println("Maximum login attempts reached. Please try again later."); } } } ``` 此代码首先定义了尝试登录的最大次数和正确的用户名和密码。然后,它进入了一个循环,直到最大尝试次数达到或用户登录成功为止。在每次循环中,它提示用户输入用户名和密码,并检查它们是否正确。如果正确,则用户被视为已登录,并退出循环。如果不正确,程序将增加尝试次数,并在每次循环中告知用户剩余的尝试次数。如果最大尝试次数已达到,程序将退出循环并提示用户稍后再次尝试登录。 ### 回答2: 使用Java编写限制次数用户登录是正确的。 首先,可以使用循环结构来实现限制登录次数的功能。比如可以使用一个while循环,每次用户输入错误的密码时,次数递增,直到达到限制次数为止。 其次,可以使用条件语句来判断用户的密码是否正确。比如可以使用if-else语句,如果用户输入的密码正确,则登录成功,否则进入循环中判断次数是否已达到限制次数。 在限制次数之前,可以使用Scanner类来读取用户的输入,以获取用户输入的用户名和密码。 示例代码如下: ```java import java.util.Scanner; public class UserLogin { public static void main(String[] args) { String username = "admin"; String password = "123456"; int MAX_ATTEMPTS = 3; int attempts = 0; Scanner scanner = new Scanner(System.in); while (attempts < MAX_ATTEMPTS) { System.out.print("请输入用户名:"); String inputUsername = scanner.nextLine(); System.out.print("请输入密码:"); String inputPassword = scanner.nextLine(); if (username.equals(inputUsername) && password.equals(inputPassword)) { System.out.println("登录成功!"); break; } else { attempts++; System.out.println("用户名或密码错误,请重新输入。"); } } if (attempts == MAX_ATTEMPTS) { System.out.println("登录失败次数已达到上限,账号已被锁定。"); } scanner.close(); } } ``` 在上述代码中,我们首先设置了用户名和密码的正确值,以及限制的最大尝试次数为3次。然后使用Scanner类从控制台读取用户输入的用户名和密码。通过while循环和if-else条件语句,判断用户输入的用户名和密码是否正确,并根据判断结果输出相应的提示信息。 如果用户输入错误次数达到限制次数,则输出登录失败的提示信息,并结束程序。 因此,通过使用循环结构和条件语句,我们可以实现限制次数用户登录。 ### 回答3: 用Java写出限制次数用户登录是正确的。可以通过设置计数器来记录用户登录失败的次数,当达到一定次数后,可以进行相应的处理,比如锁定账号或限制登录。以下是一个简单的示例代码: ```java import java.util.Scanner; public class UserLogin { private static final int MAX_ATTEMPTS = 3; // 最大尝试次数 private static final String CORRECT_PASSWORD = "123456"; // 正确密码 private static int attempts = 0; // 记录当前已尝试次数 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); boolean loginSuccess = false; // 记录登录是否成功 while (attempts < MAX_ATTEMPTS) { System.out.print("请输入密码:"); String password = scanner.nextLine(); if (password.equals(CORRECT_PASSWORD)) { System.out.println("登录成功!"); loginSuccess = true; break; } else { attempts++; System.out.println("密码错误,请重新输入。"); } } if (!loginSuccess) { System.out.println("登录失败次数过多,账号已锁定。"); } scanner.close(); } } ``` 上述代码中,通过设置一个`attempts`计数器来记录当前已尝试的次数。当用户输入的密码错误时,计数器加一,直到达到最大尝试次数。如果用户输入的密码正确,登录成功;如果尝试次数达到最大次数登录失败。 可以根据需要对达到最大尝试次数的处理方式进行修改,比如可以将已锁定的账号信息存储到数据库中,然后在登录时检查账号是否已锁定。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

01传说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值