2016-01-15 6 views
0

В течение нескольких дней я играю с Framework MembershipReboot, и, честно говоря, он выглядит очень хорошо. Я бы использовал его для своих приложений.Членство в функции блокировки блокировки

Однако у меня есть вопрос о его функциональности блокировки. Я пытался заблокировать свой аккаунт пару раз, но, похоже, ничего не происходит. Вот моя конфигурация

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

Кажется, что на третьей или даже четвертую попытку я могу войти без любого вопроса. Также я исследовал БД, которую использует членство, и я не могу найти никаких флагов для заблокированной учетной записи.

Мой вопрос в том, что функциональность блокировки уже реализована из коробки или мне нужно сделать свою логику там? Если он будет реализован, то могу ли я включить его?

ответ

1

блокировки учетных записей в MembershipReboot использует два свойства из security settings configuration

  • AccountLockoutFailedLoginAttempts (междунар, по умолчанию: 10): Количество неудачных попыток ввода пароля входа в систему до того, как учетная запись заблокирована.
  • AccountLockoutDuration (TimeSpan, по умолчанию: 5 минут): Длительность учетной записи будет заблокирована из-за слишком многих неудачных попыток входа в систему.

В ваших настройках вы переопределяете значения по умолчанию. Так что если вы попробуете более 2 неудачных попыток входа в течение 5-минутного окна, ваша учетная запись будет заблокирована еще на 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; 
    } 
+0

Что это такое с OP, которые не отмечают ответ в качестве ответа? – onefootswill