我的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子句?
答案 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;
}