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

  • 相关阅读:
    一天摄入多少蛋白质比较合理?
    给函数添加元数据(python)
    反转链表(C++实现)
    删除链表的中间节点(C++实现)
    在双向链表中删除倒数第K个链表节点(C++实现)
    在单链表中删除倒数第K个节点(C++实现)
    二叉树的创建及遍历(递归和非递归C++实现)
    删除排序数组中的重复项(C++实现)
    打印两个有序链表的公共部分(C++实现)
    用一个栈实现另一个栈的排序(C++实现)
  • 原文地址:https://www.cnblogs.com/guanbin-529/p/9209990.html
Copyright © 2020-2023  润新知