Разумное действие PasswordStrengthRegularExpression

Мы используем стандартный поставщик проверки подлинности ASP.NET(AspNetSqlMembershipProvider, как это бывает), а требование безопасности пароля defualt немного чрезмерно для наших нужд.

Мы требуем, чтобы наши пользователи вводили пароль, который по меньшей мере является буквенно-цифровым (например, буквы и, по крайней мере, один обязательный номер, смешанный регистр и не буквенно-цифровые символы, если пользователь так желает).

Может ли кто-нибудь предложить, какой параметр PasswordStrengthRegularExpression достигнет этого?

Также, как мы можем управлять сообщением об ошибке, отображаемым пользователю, если пароль, который они пытаются использовать, не позволяет проверить регулярное выражение?

Примечание

Было обнаружено, что для свойства minRequiredNonalphanumericCharacters должно быть установлено значение 0, в противном случае этот параметр отменяет любое регулярное выражение, которое используется

Ответ 1

Вот регулярное выражение, которое допускает все символы и требует хотя бы одного номера и требует не менее 6 символов.

^.*(?=.{6,})(?=.*\d).*$

Если требуется больше или меньше символов, просто измените (?=.{6,}), чтобы отобразить количество символов, которое вы хотите как минимум.

Ответ 2

Мы только что внедрили следующее выражение для проверки pwd от 8 до 16 символов и содержат три из следующих 4 элементов: буква верхнего регистра, строчная буква, символ, число

(?=^[^\s]{8,16}$)((?=.*?\d)(?=.*?[A-Z])(?=.*?[a-z])|(?=.*?\d)(?=.*?[^\w\d\s])(?=.*?[a-z])|(?=.*?[^\w\d\s])(?=.*?[A-Z])(?=.*?[a-z])|(?=.*?\d)(?=.*?[A-Z])(?=.*?[^\w\d\s]))^.*

Объяснение отдельных компонентов:

  • (? = ^ [^\s] {8,16} $) - содержит от 8 до 16 символов без пробелов
  • (? =. *?\d) - содержит 1 числовое число
  • (? =. *? [A-Z]) - содержит 1 символ верхнего регистра
  • (? =. *? [a-z]) - содержит 1 строчный символ
  • (? =. *? [^\w\d\s]) - содержит 1 символ

уведомление после сегмента длины двойным парсером, а затем в выражении вы увидите несколько. Это позволяет либо/или сравнивать 4 возможные комбинации, которые разрешены.

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