成员资格重新启动锁定功能问题

本文关键字:功能 问题 锁定 重新启动 成员 | 更新日期: 2023-09-27 18:30:27

几天来,我一直在使用MemberReboot框架,老实说,它看起来非常好。我会将其用于我的应用程序。

但是,我的问题是关于它的锁定功能。我曾几次尝试锁定我的帐户,但似乎没有任何反应。这是我的配置

<membershipReboot requireAccountVerification="true" emailIsUsername="false" multiTenant="false" allowAccountDeletion="true" passwordHashingIterationCount="0" accountLockoutDuration="00:05:00" passwordResetFrequency="0" accountLockoutFailedLoginAttempts="2" />

似乎在我第三次甚至第四次尝试时,我可以毫无问题地登录。此外,我还调查了会员资格使用的数据库,但我找不到锁定帐户的任何标志。

我的问题是 - 锁定功能是开箱即用还是我必须在那里做我的逻辑?如果它已实现,那么我可以启用它吗?

成员资格重新启动锁定功能问题

成员资格重新启动中的帐户锁定使用安全设置配置中的两个属性

    帐户锁定失败
  • 登录尝试(int,默认值:10):帐户被锁定之前失败的密码登录尝试次数。
  • 帐户锁定持续时间
  • (时间跨度,默认值:5 分钟):由于密码登录尝试失败次数过多,帐户将被锁定的持续时间。

在您的设置中,您将覆盖默认值。因此,如果您在 5 分钟内尝试超过 2 次失败的登录尝试,您的帐户将从上次失败的登录开始再锁定 5 分钟。如果您在上次登录失败后五分钟尝试登录,您将登录,因为根据锁定逻辑,帐户未锁定。如果您在 5 分钟内尝试登录,并且失败的尝试未超过,您仍然可以登录。

代码胜于文字(检查验证密码方法)您将在用户帐户表中看到帐户锁定的所有必需属性。即 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;
    }