2

我的 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 子句?

4

2 回答 2

1

您应该使用逻辑or,而不是 AND。如果某人同时满足这两个条件,您只会将其锁定:超过 4 次尝试并且少于超时期限。

使用or,您将锁定满足这两个条件之一或两者的任何人。

于 2012-07-30T14:43:05.813 回答
1

这是因为

 dtCurrentTimePlus15 = 15

dtLastLoginAttempt = 2

将语句反转为:

if ((iLoginAttempts > 4) && (dtLastLoginAttempt < dtCurrentTimePlus15))
{
    oCust.CustLoginStatus = "Your account is currently locked.";
    return false;
}  
于 2012-07-30T14:43:52.697 回答