3次尝试后锁定用户帐户30分钟,6次后完全锁定?

时间:2013-02-26 12:33:58

标签: c# asp.net-mvc-3 asp.net-membership

如果成功尝试3次,我如何锁定用户帐户30分钟,但如果进行了6次尝试,则帐户被锁定,需要管理员解锁。

所以在我的网页配置中我有:

maxInvalidPasswordAttempts="6"

这样可以正常工作,如果在aspnetdb表中进行了6次无效尝试,我可以看到IsLockedOut被设置为true。但是我试图在此基础上进行构建,以便如果用户输入错误的详细信息3次,我会执行以下操作:

                    if (user.FailedPasswordAttemptCount > 3)
                    {
                        memberUser.IsApproved = false;

                        ModelState.AddModelError("", "Your account has been locked out for 30 minutes.  Please retry after this time has elasped.  Note 3 further wrong entries " +
                        "will result in your account being locked requiring Admin reset");

                        membershipService.UpdateUser(memberUser);

                    }

所以user是我在db中创建的一个视图,我从aspnetdb表中获取值,如果大于3次尝试,我将aspnet db table上的isApproved属性设置为false。

在我的登录方法中,我有以下内容:

            if (memberUser.IsApproved == false)
            {

                DateTime PasswordFailedTime = user.FailedPasswordAttemptWindowStart.AddMinutes(30);
                DateTime CurrentTime = DateTime.UtcNow;

                if (CurrentTime > PasswordFailedTime)
                {
                   memberUser.IsApproved = true;
                   membershipService.UpdateUser(memberUser);
                }

            }

因此,如果失败时间已经过去30分钟,则重新批准该帐户。问题是即使我在屏幕上说等待30分钟 - 如果用户再次尝试3次我想锁定帐户。但是因为我假设IsApproved属性为false,FailedPasswordAttemptCount永远不会增加,所以我永远不会达到锁定帐户的6值,并显示消息说你的帐户被锁定需要管理员解锁。

0 个答案:

没有答案