在java

时间:2017-04-29 19:34:04

标签: java function

我有一个登录功能。我希望我的功能不起作用,例如10秒如果 用户打电话超过5次。我该怎么做?我会很高兴的 如果有人回答我的问题。

3 个答案:

答案 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());   
       }