Redis 在java中的使用(登录验证,5分钟内连续输错3次密码,锁住帐号,半小时后解封)(三)
在java中使用redis,做简单的登录帐号的验证,使用string类型,使用redis的过期时间功能
1.首先进行redis的jar包的引用,因为用的是springBoot,springBoot集成了redis直接引入即可
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
2.安装redis的jar包的驱动
<dependency>
<groupId>redis.clients</groupId>
<artifactId> jedis</artifactId>
<version>2.9.0</version>
</dependency>
3. 设置过期时间
第一种:
jedis.setex(loginId, 300, "1"); key为loginId,过期时间为300秒,值为"1" 或者
第二种:
jedis.set(loginId,"1")
jedis.expire(loginId,300)
1 package com.idcos.automate.test.workflow.operation; 2 3 import org.junit.Test; 4 import redis.clients.jedis.Jedis; 5 6 /** 7 * @author GuanBin 8 * @version Redis.java, v1 2018/6/20 下午2:47 GuanBin Exp $$ 9 */ 10 11 public class RedisTest { 12 Jedis jedis = new Jedis("127.0.0.1", 6379); 13 14 @Test 15 public void testCheckLogin() { 16 //登录验证时,5分钟内连续输错3次密码,锁住帐号;帐号锁住时间为半个小时,半小时后解封 17 checkUser("tom", "123"); 18 } 19 20 private void checkUser(String loginId, String password) { 21 Boolean exit = jedis.exists(loginId); 22 23 if (exit == true && ("true".equals(jedis.get(loginId)))) { 24 System.out.println("该帐号已被锁,请确认"); 25 // throw new CommonBizException("该帐号已被锁,请确认"); 26 27 } else if (exit == true && "5".equals(jedis.get(loginId))) { 28 //锁帐号 29 jedis.set(loginId, "true"); 30 //设置半个小时的过期时间 31 jedis.expire(loginId, 30 * 60); 32 } else { 33 checkNameAndPassword("tom", "123"); 34 } 35 } 36 37 private void checkNameAndPassword(String loginId, String password) { 38 39 if ("tom".equals(loginId) && "123456".equals(password)) { 40 jedis.del(loginId); 41 System.out.println("登录成功"); 42 43 } else { 44 if (jedis.exists(loginId)) { 45 jedis.incr(loginId); 46 } else { 47 jedis.setex(loginId, 300, "1"); 48 } 49 System.out.println("第" + jedis.get(loginId) + "登录失败"); 50 } 51 52 } 53 54 }
在客户端用ttl命令查看tom这个key还有多长时间解锁
作者:guanbin —— 纵码万里千山
出处:https://www.cnblogs.com/guanbin-529/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。