限制登錄次數


題目:有一APP客戶端需要增加一個功能,限制用戶輸入密碼登陸次數1小時內不得超過5次嘗試,否則認為是在作弊,將予以保護不得用戶再繼續進行操作。

思路:此處應該加鎖,但是加鎖會影響登錄效率.看題目發現用戶id是作為傳入參數。所以我們可不可以拿用戶id作為一個鎖呢?這樣就只會鎖住該用戶,而不會鎖住別人.使用Redis作為緩存,key為用戶id。

  其他邏輯處理代碼這里省略,只寫最關鍵的代碼塊:

int count = Integer.parseInt(countObj.toString());  
//expire:設置key的時間,第三個參數是時間的單位,這里設置為"秒"  
if(count == 1)  
    redisTemplate.expire("用戶id",30, TimeUnit.SECONDS);  
if(count <= 5)  
    System.out.println(String.format("第%d次登錄成功", count));  
else  
    System.out.println("超過5次登陸,對不起不能這么頻繁登陸.");

  這個解決方案是借助第三方組件實現的,主要從代碼效率方面考慮,隨着現代軟件的不斷發展,這樣代碼的思想使用會越來越廣,所以開發的時候一定要多思考再下手寫代碼。


免責聲明!

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



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