【发布时间】:2014-11-24 10:39:50
【问题描述】:
您好,我在 c# windows 表单中有登录系统类似的应用程序。当用户输入 3 次错误的详细信息时,会出现一条消息并说帐户已锁定。是否有任何技巧/方法可以将该用户的帐户冻结几秒钟?
【问题讨论】:
您好,我在 c# windows 表单中有登录系统类似的应用程序。当用户输入 3 次错误的详细信息时,会出现一条消息并说帐户已锁定。是否有任何技巧/方法可以将该用户的帐户冻结几秒钟?
【问题讨论】:
您可以创建一个字典,提供用户名和他被阻止的时间。例如:
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);
}
就是这样。希望对你有帮助!
【讨论】:
有很多方法可以冻结帐户。您可以设置权限列表。在权限列表中,您可以设置一个令牌并在每次有人尝试登录时递增它。如果令牌的值超过某个值,则用户在DateTimesetting 确定的某个时间范围内无法登录。
如果有的话,您尝试过什么?您是否有任何代码可以分享,以便用户了解您希望进入的方向?
【讨论】: