Как установить параметры пароля в Aspnet Core 2.1 - PullRequest
0 голосов
/ 04 декабря 2018

Я следовал примеру SO и официальной документации , но, тем не менее, я меняю длину пароля в моем проекте Aspnet core 2.1, ничего не меняется.
Я всегда получаю сообщение«Пароль должен быть не менее 6 и длиной не более 100 символов.»

В public void ConfigureServices(IServiceCollection services) Я пробовал

services.Configure<IdentityOptions>(options =>
{
  options.Password.RequiredLength = 1;
});

в различных местах или добавлял его к AddDefaultIdentity<>

services.AddDefaultIdentity<IdentityUser>(options =>
    options.Password.RequiredLength = 1;
  )
  .AddEntityFrameworkStores<ApplicationDbContext>();

но безрезультатно.

Я использую версию без скаффолдинга , поэтому у меня нет доступа к файлам HTML или cshtml.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Это все опции для пароля: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-configuration?view=aspnetcore-2.2

services.Configure<IdentityOptions>(options =>
{
    // Default Password settings.
    options.Password.RequireDigit = true;
    options.Password.RequireLowercase = true;
    options.Password.RequireNonAlphanumeric = true;
    options.Password.RequireUppercase = true;
    options.Password.RequiredLength = 6;
    options.Password.RequiredUniqueChars = 1;
});

Чтобы изменить правило, см. Это Как переопределить политику паролей ASP.NET Core Identity https://andrewlock.net/creating-custom-password-validators-for-asp-net-core-identity-2/

0 голосов
/ 04 декабря 2018

Похоже, вы нашли ошибку причину для подмостей.В библиотеке классов Razor, которая содержит реализацию Razor Pages пользовательского интерфейса ASP.NET Core Identity, есть класс InputModel для страницы Register, который выглядит следующим образом:

public class InputModel
{
    ...

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    ...
}

Из этого фрагмента кода ясно, что независимо от того, что вы установили для RequiredLength, встроенная проверка ModelState всегда будет требовать длины от 6 до 100 символов.

Стоит также отметить, чтоэто влияет не только на страницу Register - я подтвердил, что это также влияет на ResetPassword, SetPassword и ChangePassword.

С точки зрения решения: Крис Пратт указал в комментариях, что единственный реальный способ решить эту проблему - это очистить уязвимые страницы и внести необходимые изменения в атрибуты StringLength.


Обновление: проблема Вы подняли, был закрыт как дубликат, с решением, чтобы подмостить Страницы и внести необходимые изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...