spring boot中使用Redis实现限制用户登陆次数
发布日期:2021-06-29 22:26:43 浏览次数:2 分类:技术文章

本文共 1995 字,大约阅读时间需要 6 分钟。

文章目录

SpringBoot中使用Redis实现限制用户登陆次数

这里使用的是SpringBoot + Redis搭建,基于RedisAtomicInteger的一个简单的应用实例,具体实现是10分钟内用户登录失败次数不能超过3次,超过则返回相关上限提示,时间间隔可以根据个人需求修改。

引入Redis依赖

org.springframework.boot
spring-boot-starter-data-redis

具体业务逻辑(这里只是简单的demo,可以根据个人需求去做)

@Servicepublic 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

转载地址:https://docker.blog.csdn.net/article/details/112176972 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:redis 返回 key 的剩余的过期时间(RedisTemplate封装PTTL 命令)
下一篇:PostgreSQL(Pgsql)快速开始/ ubuntu、centos下PostgreSQL数据库安装配置/查看已经编译的pg 编译选项

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月23日 11时28分39秒