限制用戶登錄失敗次數,在連續登陸失敗10次后凍結該用戶。


Controller中內容如下

   //定義rediesTemplate

private static RedisTemplate<String, Object> redisTemplate = SpringContextHolder.getBean("redisTemplate");  

//定義日志記錄
 private static final Logger logger = LoggerFactory.getLogger(SysCommonUtil.class);
    

 

String key = CacheKey.USER_NAME  +"_"+ username;                     //定義緩存key
        try {
            currentUser.login(token);
            redisTemplate.delete(key);                                                       //登陸成功刪除緩存
        } catch (Exception e) {
            Object countObj = redisTemplate.opsForValue().get(key);      //根據key獲取緩存中的val
            long count = 1;                                                                         //定義第一次登陸失敗的次數為 1
            if(countObj != null){
                count = Long.parseLong(countObj.toString());
                count ++;                                                                             //連續登陸失敗 次數++
                if (count == Const.LOGIN_FAIL_COUNT) {                        //定義限制錯誤登陸的最大次數,常量定義。

                    userService.setStatusByAc(username,ManagerStatus.FREEZED.getCode());            //調用凍結方法
                    logger.error("賬號為【"+username+"】的用戶單日登錄次數超過上限,已被凍結。");  //日志記錄
                }
            }
            // 往redis中增加登錄失敗的次數。key:username;count:次數;24 計時時間; TimeUnit.HOURS:24小時
            redisTemplate.opsForValue().set(key, count, 24, TimeUnit.HOURS);     
            
            //處理完登陸失敗手動拋異常
            throw e;
        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM