我有一个登录功能。我希望我的功能不起作用,例如10秒如果 用户打电话超过5次。我该怎么做?我会很高兴的 如果有人回答我的问题。
答案 0 :(得分:2)
您需要为用户记录失败的登录尝试(例如在database
中),一旦达到阈值,您需要从login
方法返回错误响应,从上次开始可配置的时间量失败的登录尝试,例如:
x
分钟之内,则请阻止来电答案 1 :(得分:1)
功能不起作用,例如10秒
您需要具体说明功能不起作用的具体含义。但是,如果您只是想阻止方法调用Future
秒,请按照以下方法:
您需要创建x
来计算尝试次数,然后counter
然后使用Thread.sleep(10000)使请求保持(休眠)10秒。理想情况下,if(counter>5)
值应保留在数据库(或任何其他存储)中,并再次读取以验证尝试次数。
但是,我强烈建议你按照@Darshan的回答更有意义。
答案 2 :(得分:0)
首先,您需要识别用户。
这可以在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());
}