几天来,我一直在玩MembershipReboot框架,老实说,它看上去很不错。我会把它用于我的申请。
然而,我的问题是它的锁定功能。我试过几次锁我的帐户,但似乎什么也没发生。这是我的配置
<membershipReboot requireAccountVerification="true" emailIsUsername="false" multiTenant="false" allowAccountDeletion="true" passwordHashingIterationCount="0" accountLockoutDuration="00:05:00" passwordResetFrequency="0" accountLockoutFailedLoginAttempts="2" />
看来,在我的第三次甚至第四次尝试,我可以登录没有任何问题。此外,我已经调查了成员资格使用的DB,我找不到锁定帐户的任何标志。
我的问题是-锁定功能已经实现了,还是我必须在那里执行我的逻辑?如果它是实现的,那么我可以启用它吗?
发布于 2016-03-01 11:26:42
MembershipReboot中的帐户锁定使用来自安全设置配置的两个属性
在您的设置中,您正在重写默认值。因此,如果在5分钟的窗口内尝试超过2次失败的登录尝试,您的帐户就会从上次失败的登录中锁定5分钟。如果您尝试在上次登录失败后5分钟登录,您将被登录,因为根据锁定逻辑,帐户未被锁定。如果您试图在5分钟内登录,但未超过失败尝试,则仍然可以登录。
代码比单词(检查VerifyPassword方法)更好,您将在UserAccounts表中看到帐户锁定所需的所有属性。即LastFailedLogin和FailedLoginCount
protected virtual bool CheckHasTooManyRecentPasswordFailures(TAccount account)
{
var result = false;
if (Configuration.AccountLockoutFailedLoginAttempts <= account.FailedLoginCount)
{
result = account.LastFailedLogin >= UtcNow.Subtract(Configuration.AccountLockoutDuration);
if (!result)
{
// if we're past the lockout window, then reset to zero
account.FailedLoginCount = 0;
}
}
if (result)
{
account.FailedLoginCount++;
}
return result;
}https://stackoverflow.com/questions/34808748
复制相似问题