有几天我正在使用MembershipReboot框架,说实话它看起来非常好。我会将它用于我的应用程序。
但是,我的问题是它的锁定功能。我试图锁定我的帐户几次,但似乎没有任何反应。这是我的配置
<membershipReboot requireAccountVerification="true" emailIsUsername="false" multiTenant="false" allowAccountDeletion="true" passwordHashingIterationCount="0" accountLockoutDuration="00:05:00" passwordResetFrequency="0" accountLockoutFailedLoginAttempts="2" />
在我的第三次甚至第四次尝试中,我可以毫无问题地登录。此外,我已经调查了会员使用的数据库,我找不到锁定帐户的任何标志。
我的问题是 - 锁定功能是否已经开箱即用,或者我必须在那里做我的逻辑?如果实现了,我可以启用它吗?
答案 0 :(得分:1)
MembershipReboot中的帐户锁定使用security settings configuration
中的两个属性在您的设置中,您将覆盖默认值。因此,如果您在5分钟的窗口内尝试超过2次失败的登录尝试,则您的帐户将在上次登录失败后再锁定5分钟。如果您在上次登录失败后尝试登录五分钟,则会根据锁定逻辑锁定帐户,因为帐户未被锁定。如果您尝试在5分钟内登录并且未尝试失败,则仍可以登录。
代码优于单词(Check VerifyPassword method) 您将在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;
}