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还有多长时间解锁

 

posted @ 2018-06-21 17:07  纵码万水千山  阅读(2410)  评论(0编辑  收藏  举报