Изменение DefaultIdentity ASP.NET Core Services не изменяет параметры пароля - PullRequest
0 голосов
/ 18 апреля 2019

После проверки подлинности с использованием лесов я испытываю трудности с изменением параметров идентификации.

Я использовал эту команду:

dotnet new webapp --auth Individual -o mywebapp

Затем я изменил файл Startup.cs как таковой, изменив параметры Identity:

 public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlite(
                Configuration.GetConnectionString("DefaultConnection")));

        services.AddDefaultIdentity<IdentityUser>(config =>
        {
            // TODO
            //config.SignIn.RequireConfirmedEmail = true;
        })
            .AddDefaultUI(UIFramework.Bootstrap4)
            .AddEntityFrameworkStores<ApplicationDbContext>();


        services.Configure<IdentityOptions>(options =>
        {
            // Password settings
            options.Password.RequireDigit = true;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireUppercase = false;
            options.Password.RequireLowercase = false;
            options.Password.RequiredLength = 3;
            options.Password.RequiredUniqueChars = 1;

            // Lockout settings
            options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
            options.Lockout.MaxFailedAccessAttempts = 5;
            options.Lockout.AllowedForNewUsers = true;

            // User settings
            options.User.RequireUniqueEmail = true;
        });

Настройка options.Password.RequiredLengthне имеет никакого эффекта.

При запуске приложения браузер отображает сообщение об ошибке:

The Password must be at least 6 and at max 100 characters long.

Я не ожидаю ошибку «по крайней мере 6»;Из того, что я прочитал, должно быть «3».Как мне это исправить?

Столько черной магии происходит, и поиск фразы "по крайней мере" ничего не показывает.

Редактировать ---> ДобавлениеКод ViewModel, который был создан в лесу:

namespace netplus.Models.Account
{
   public class RegisterViewModel
   {
      [Required, MaxLength(256)]
      public string Username { get; set; }

      [Required, DataType(DataType.Password)]
      public string Password { get; set; }

      [DataType(DataType.Password), Compare(nameof(Password))]
      public string ConfirmPassword { get; set; }
   }
}

1 Ответ

1 голос
/ 18 апреля 2019

Для IdentityOptions он настроен на _userManager.CreateAsync(user, Input.Password) для проверки пароля.

Для The Password must be at least 6 and at max 100 characters long это контролируется ViewModel в RegisterModel.

Вы не можете использовать IdentityOptions для управления проверкой на стороне клиента.

Выполните следующие действия, чтобы управлять им:

  1. Щелкните правой кнопкой мыши проект -> Добавить новый элемент лесов -> Удостоверение-> Проверить учетную запись \ Зарегистрироваться-> Выбрать правильный класс контекста данных
  2. Откройте RegisterModel и измените InputModel для проверки клиента

    public class InputModel
    {
        [Required]
        [EmailAddress]
        [Display(Name = "Email")]
        public string Email { get; set; }
    
        [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; }
    
        [DataType(DataType.Password)]
        [Display(Name = "Confirm password")]
        [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...