设置用户登录尝试时出现逻辑错误

时间:2012-07-30 14:41:02

标签: c# asp.net login passwords

我的asp.net应用程序使用自定义逻辑进行用户登录功能。其中一个要求是用户(一旦被锁定)无法在15分钟后获得访问权限。

我目前的逻辑是:

// check if account is locked & LastLoginAttempt is NOT over 15 minutes;
if ((iLoginAttempts > 4) && ( dtCurrentTimePlus15 < dtLastLoginAttempt))
{
    oCust.CustLoginStatus = "Your account is currently locked.";
    return false;
}  

但是,当iLoginAttempts = 5且dtLastLoginAttempt是2分钟前....为什么上面的逻辑会跳过if子句?

2 个答案:

答案 0 :(得分:1)

您应该使用逻辑or,而不是AND。只有在满足这两个条件时才会锁定某人:超过4次尝试且小于超时期限。

使用or,您将锁定任何符合这两个条件中的一个或两个条件的人。

答案 1 :(得分:1)

这是因为

 dtCurrentTimePlus15 = 15

dtLastLoginAttempt = 2

将声明反转为:

if ((iLoginAttempts > 4) && (dtLastLoginAttempt < dtCurrentTimePlus15))
{
    oCust.CustLoginStatus = "Your account is currently locked.";
    return false;
}