第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

java基于redis做登錄錯誤鎖定用戶

大家好,一个人见人爱,花见花开的小白来跟大家分享来了,敲黑板,现在大多数应用以及网页登录都有登录失败锁定用户一段时间不让登录这一说,那么究竟是怎么实现呢,一起来看一下吧
首先说以下主题逻辑,然后贴代码

  1. 首先验证登录账号的有效性,是否存在,如果存在继续下一步,不存在直接丢给前端不存在
  2. 判断redis中代表用户登录失败的key(在下面代码里面,key用的是两个用户账号拼接成的字符串)是否存在
  3. 如果存在,则代表这个用户不是第一次因密码错误登录失败了,之后利用定义好的key去获取value,value用字符串存储,转成数值类型加一。
  4. 如果不存在,但是密码错误,则用定义好的key 给到redis里面,value给成字符串1。
  5. 下次登录时,便首先判断key是否存在,如存在判断错误次数,超过上限直接返回
    以上就是主要逻辑了,结合代码看更容易理解
    代码
 @Autowired
  private UserDao userDaoImpl;
  //注入RedisTemplate
  @Autowired
  private RedisTemplate<String,String> redisTemplate;
  //验证用户登录方法
  public String verifyUserPassword(User user) {
    //获取redis中对String字符串操作的对象
    ValueOperations<String, String> valueOperations= redisTemplate.opsForValue();
    //boos为判断redis中是否有此key存在
    Boolean boos;
    //失败或成功提示语
    String str = "";
    //1.首先验证账号的有效性,懒得验证了,大家结合自己的验证以下就好
    
    //验证此key是否存在,如果存在判断错误次数是否大于等于5,如果大于等于,则直接返回,不进行下面逻辑,否则继续进行
    boos = redisTemplate.hasKey(user.getUseraccount()+user.getUseraccount());
    if(boos){
	//根据key获取错误次数
      if(Integer.parseInt(valueOperations.get(user.getUseraccount()+user.getUseraccount()))>=5){
        return "用户已被锁定";
      }      
    }
    //2.根据账号获取密码
    String password = userDaoImpl.queryUserPassword(user);    
    //用输入密码与数据库密码比对
    Boolean boo = password.equals(user.getPassword());   
    
    if(boo){
         str ="密码正确";
    }
    //密码错误进行redis操作
    if(!boo){
      str ="密码错误";
      //3.证明密码错误   
       if(boos){
         //如果boos为true,则证明redis中有此key,获取key的数值并加1
         Integer inte = Integer.parseInt(valueOperations.get(user.getUseraccount()+user.getUseraccount()));
         inte++;
         valueOperations.set(user.getUseraccount()+user.getUseraccount(), inte+"");
       }else{
         //boos为flase,则证明redis中没有此key,密码是第一次错误,故走以下逻辑
         valueOperations.set(user.getUseraccount()+user.getUseraccount(), 1+"");
         //redis中设置key的过期时间
         redisTemplate.expire(user.getUseraccount()+user.getUseraccount(), 300, TimeUnit.SECONDS);
       }
       //判断错误次数,大于等于5次锁定
       if(Integer.parseInt(valueOperations.get(user.getUseraccount()+user.getUseraccount()))>=5){
         //redis中设置key的过期时间
         redisTemplate.expire(user.getUseraccount()+user.getUseraccount(), 300, TimeUnit.SECONDS);
         str ="密码错误5次,账号被锁定五分钟";
       }    
    }
    //如果密码相同,则看redis中是否有错误次数,如果有则删除
    boos = redisTemplate.hasKey(user.getUseraccount()+user.getUseraccount());
    if(boo){
      redisTemplate.delete(user.getUseraccount()+user.getUseraccount());
    }
    return str; 
  }

以上就是主要代码了,有更好方法的评论在下方哦!

點擊查看更多內(nèi)容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消