Блокировка ядра ASP не установлена ​​LockoutEnabled - PullRequest
0 голосов
/ 29 ноября 2018

Инициализация удостоверения с автоматической блокировкой пользователя после 3 попыток входа в Startup.cs

var lockoutOptions = new LockoutOptions()
{
    AllowedForNewUsers = true,
    DefaultLockoutTimeSpan = TimeSpan.FromDays(365),
    MaxFailedAccessAttempts = 3
};
services.AddIdentity<ApplicationUser, IdentityRole>(x =>
{
    x.Lockout = lockoutOptions;
})

Вход в AccountController.cs

var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: true);
  1. Исходное состояние базы данных

enter image description here

Первый сбой при входе в систему

enter image description here

Второй сбой при входе в систему

enter image description here

Третий сбой входа в систему

enter image description here

В финале

LockoutEnd = +один год (все в порядке)

LockoutEnabled == 0 (false) пользователь не заблокирован и может войти

Почему«LockoutEnabled» не 1 (true)

Какие могут быть причины?

1 Ответ

0 голосов
/ 29 ноября 2018

Свойство LockoutEnabled указывает, что пользователь МОЖЕТ быть заблокирован.Это НЕ означает, что пользователь в настоящее время забанен.

Получает или устанавливает флаг, указывающий, может ли пользователь быть заблокирован.

https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.identity.identityuser-1.lockoutenabled?view=aspnetcore-2.1

Таким образом, вы можете настроить «обычных» пользователей с LockoutEnabled = true и некоторых «специальных администраторов», у которых LockoutEnabled = false.(Было бы плохо, если бы «злые люди» блокировали ваших администраторов, просто пытаясь войти в систему несколько раз - просто в качестве примера, где это может иметь смысл.)

Если для LockoutEnabled по умолчанию установлено значение true для новых пользователей, настроенное с помощью

LockoutOptions.AllowedForNewUsers 

Получает или задает флаг, указывающий, можно ли заблокировать нового пользователя.По умолчанию установлено значение true.

https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.identity.lockoutoptions.allowedfornewusers?view=aspnetcore-2.1

В вашем примере кода установлено значение true, поэтому я полагаю, что вы изменили его после создания тестового пользователя или обновления базы данных где-то / длятестирование, поэтому вам придется вручную установить значение true в вашей базе данных для всех существующих пользователей.(новые пользователи должны быть добавлены правильно.)

...