2014-11-24 81 views
-1

嗨我有登录系统类似的应用程序在C#窗体中。当用户输入3次错误的详细信息时,会发出一条消息并说ACCOUNT LOCKED。是否有任何技巧/方法冻结该用户的帐户几秒钟?帐户冻结了几秒

回答

0

有很多方法可以冻结一个帐户。您可以设置权限列表。在权限列表中,您可以设置一个令牌并在每次有人尝试登录时增加它。如果令牌的值超过某个值,则用户无法登录某个时间帧,具体取决于DateTime设置。

你有什么尝试,如果有什么?你有没有可以分享的代码,以便用户能够理解你想要进入的方向?

+0

我试过类似if(correct){proceed} else {wrongAttempt ++} if(wrongAttempts == 3){Console.WriteLine(“Account Lock”)}。 请向我解释我可以用应用程序或用户帐户的30秒冻结时间替换帐户锁定的方式。 – saagar 2014-11-24 10:58:37

+1

FelipeKunzler对你来说是一个很好的开始。我会从那里开始,并检查是否需要更多帮助。 – 2014-11-24 12:31:47

1

当他被封锁时,您可以创建一个字典,提供用户名时间。例如: -

private Dictionary<string, DateTime> blockedUsers; 

登陆后,你会如果当前用户在“blockedUsers”是否存在,如果真验证,则必须比较当前时间和存储在列表中的特定用户的时间。如果它在30秒的范围内,则可以取消显示错误的登录。否则,您将从阻止列表中删除此用户。事情是这样的:

 // Checks if the user exists in the blockedUsers. 
     if (blockedUsers.ContainsKey(userName)) 
     { 
      // If so, then gets the difference between when he was blocked and now. 
      var diffInSeconds = (DateTime.Now - blockedUsers[userName]).TotalSeconds; 
      // If the difference is smaller than 30, prevent him from loggin. 
      if (diffInSeconds < 30) 
      { 
       MessageBox.Show("Sorry, but your user has been temporary blocked from loggin. Try later."); 
       return; 
      } 
      // If the diff is greater than 30, then there is no reason to keep him in blocked list. 
      else 
      { 
       blockedUsers.Remove(userName); 
      } 
     } 

你要做的另一件事是:如果“wrongAttempts”是3,那么您将其添加在“blockedUsers”,如果他试图在30秒再次登录时,他会被第一次验证所阻挡。

 if (wrongAttempts >= 3) 
     { 
      blockedUsers.Add(userName, DateTime.Now); 
     } 

就是这样。希望它可以帮助你!

+0

谢谢大家的帮助。 – saagar 2014-11-24 12:39:58

相关问题