spring boot中使用Redis实现限制用户登陆次数 朴灿烈づ我的快乐病毒、 2023-01-02 02:27 206阅读 0赞 ### 文章目录 ### * SpringBoot中使用Redis实现限制用户登陆次数 * 参考 # SpringBoot中使用Redis实现限制用户登陆次数 # 这里使用的是SpringBoot + Redis搭建,基于RedisAtomicInteger的一个简单的应用实例,具体实现是10分钟内用户登录失败次数不能超过3次,超过则返回相关上限提示,时间间隔可以根据个人需求修改。 引入Redis依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 具体业务逻辑(这里只是简单的demo,可以根据个人需求去做) @Service public class LoginService { @Autowired private StringRedisTemplate stringRedisTemplate; /** * 时间间隔(分钟) */ private static final int TIME_INTERVAL = 10; /** * 登录失败重试次数上限 */ private static final int FAILED_RETRY_TIMES = 3; /** * redis记录用户登录失败次数key */ private static final String USER_LOGIN_FAILED_COUNT = "USER:LOGIN:FAILED:COUNT:"; /** * 用户登录 * * @param name 用户名 * @param pwd 密码 * @return */ public String login(String name, String pwd) { String key = USER_LOGIN_FAILED_COUNT + name; RedisAtomicInteger counter = getRedisCounter(key); if (counter.get() >= FAILED_RETRY_TIMES) { return "登录失败次数已达上限,请稍后再试。"; } // 密码校验,这里只是简单做下匹配,可以结合自己业务校验 if (!"pwd".equals(pwd)) { // 失败次数 + 1 counter.getAndIncrement(); return "登录失败!"; } stringRedisTemplate.delete(key); return "登录成功!"; } /** * 根据key获取计数器 * * @param key key * @return */ private RedisAtomicInteger getRedisCounter(String key) { RedisAtomicInteger counter = new RedisAtomicInteger(key, stringRedisTemplate.getConnectionFactory()); if (counter.get() == 0) { // 设置过期时间,10分钟 counter.expire(TIME_INTERVAL, TimeUnit.MINUTES); } return counter; } } # 参考 # Redis实现用户登陆失败次数限制 参考URL: https://blog.csdn.net/qq\_38531706/article/details/107341155 SpringBoot中使用Redis实现限制用户登陆次数 参考URL: https://blog.csdn.net/yongerprogrammer/article/details/103673149 SpringSecurity下,使用Redis实现验证码验证,用户错误登陆次数限制,锁定/释放用户 参考URL: https://blog.csdn.net/qq\_42105629/article/details/104657127
还没有评论,来说两句吧...