Подтвердите пароль с помощью регулярных выражений - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь создать пароль, который удовлетворяет определенным условиям, например:

  1. Имеет хотя бы один верхний регистр
  2. Хотя бы один нижний регистр
  3. При хотя бы одно число
  4. Один не буквенно-цифровой c символ

Я уже пробовал это:

[StringLength(100, ErrorMessage = "The {0} must have a minimun of {2}and maximum of {1} characters long.", MinimumLength = 6)]
     [RegularExpression(@"^(?!.([A-Za-z0-9])\1{1})(?=.?[A-Z])(?=.?[a-z])(?=.?[0-9])(?=.?[#?!@$%^&-])$", ErrorMessage = "My error messaage in spanish lol")]
            public string NewPassword { get; set; }

Однако, когда я пытаюсь ввести пароль типа « Qwerty123 ». он действует как некоторые или ни одно из условий, при которых я получаю сообщение об ошибке. Что не так с моим кодом?

Ответы [ 2 ]

2 голосов
/ 13 июля 2020

ASP. NET MVC уже имеет встроенный валидатор, который может делать все это, зачем вам развертывать свой собственный?

    var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()));
    
    manager.PasswordValidator = new PasswordValidator
    {
        RequiredLength = 6,
        RequireNonLetterOrDigit = true,
        RequireDigit = true,
        RequireLowercase = true,
        RequireUppercase = true,
        MaxLength = 10
    };

Вы можете настроить пароль валидатор, создав подкласс PasswordValidator (или реализуя IIdentityValidator) и предоставив свою собственную реализацию.

0 голосов
/ 13 июля 2020

Я бы использовал положительный просмотр вперед с переменной длиной (?=.*<condition>), поэтому выражение будет выглядеть так: ^(?=.{10,20}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[#?!@$%^&-]).*$ где (?=.{10,20}$) определяет минимальную и максимальную длину (?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[#?!@$%^&-]) определяет все символы, необходимые хотя бы один раз.

Я думаю, ваша самая большая ошибка заключалась в использовании .?, который допускал бы только один ноль или один предшествующий символ в группах, но я не уверен, что (?!.([A-Za-z0-9])\1{1}) предполагается архивировать

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