[英]making a function not to work for a few some seconds in java
我有一個登錄功能,如果用戶調用它超過5次,我希望我的功能在10秒鍾內不起作用,那我該怎么辦?如果有人回答我的問題,我會很高興。
您需要記錄用戶的失敗登錄嘗試(例如,在database
),並且一旦達到閾值,就需要從上次失敗的登錄嘗試開始,在可配置的時間內從login
方法返回錯誤響應,例如:
x
分鍾之內,則阻止呼叫 功能不起作用,例如10秒
您需要具體說明不起作用的確切含義。 但是,如果您只是想阻塞x
秒的方法調用,請遵循以下方法:
您需要創建一個counter
來計算嘗試次數,然后創建if(counter>5)
並使用Thread.sleep(10000)來使請求保持(睡眠)10秒鍾。 理想情況下, counter
值應保存在數據庫(或任何其他存儲)中,然后再次讀取該值以驗證嘗試次數。
但是,我強烈建議您遵循@Darshan的回答,這更有意義。
首先,您需要識別用戶。
這可以基於IP來完成。
有一個ConcurrentHashMap
ConcurrentHashMap<String,Long>IpAddressValidationMap // String is the Ip address and Long is the timeInMilleseconds
您做一個過濾器並進行檢查
public void prefilterFunction(RequestObject object)
{
String ip=object.getIP(); // just an example not the standard call for getting Ip addr
Long time=IpAddressValidationMap.get(ip);
if(time!=null)
{
if(time<THRESHOLD_TIME)
{
return ;
}
else
{
// We allow the user to proceed
}
}
}
public void validateLogin(RequestObject object)
{
// if the login fails
IpAddressValidationMap.put(ipAddr,System.currentTimeinMIllis());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.