【问题标题】:Account freeze for some seconds帐户冻结几秒钟
【发布时间】:2014-11-24 10:39:50
【问题描述】:

您好,我在 c# windows 表单中有登录系统类似的应用程序。当用户输入 3 次错误的详细信息时,会出现一条消息并说帐户已锁定。是否有任何技巧/方法可以将该用户的帐户冻结几秒钟?

【问题讨论】:

    标签: c# forms window


    【解决方案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);
            }
    

    就是这样。希望对你有帮助!

    【讨论】:

    • 谢谢大家的帮助。
    【解决方案2】:

    有很多方法可以冻结帐户。您可以设置权限列表。在权限列表中,您可以设置一个令牌并在每次有人尝试登录时递增它。如果令牌的值超过某个值,则用户在DateTimesetting 确定的某个时间范围内无法登录。

    如果有的话,您尝试过什么?您是否有任何代码可以分享,以便用户了解您希望进入的方向?

    【讨论】:

    • 我尝试了类似 if(correct){proceed} else {wrongAttempt++} if (wrongAttempts==3){Console.WriteLine ("Account Lock")} 的方法。请解释一下我可以用 30 秒的应用程序或用户帐户冻结时间替换帐户锁定的方法。
    • FelipeKunzler 为您提供了一个良好的开端。如果您需要更多帮助,我会从那里开始查看。
    猜你喜欢
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多