Как вы применяете правила сложности пароля в Zotonic? - PullRequest
0 голосов
/ 05 октября 2010

Я хотел бы применить политику паролей в Zotonic.Моим первым впечатлением было бы сделать это в качестве валидатора в поле new_password в редакторе удостоверений.

Вот пример политики:

  • Не менее 8 символов вдлина
  • Иметь хотя бы одну строчную букву
  • Иметь хотя бы одну строчную букву
  • Иметь хотя бы одно число
  • Иметь хотя бы одну небуквенно-цифровой символ
  • Не основывается на имени учетной записи

Вот возможная реализация (не тестировалась):

string:length(Password) >= 8 andalso
re:run(Password, "[A-Z]") =/= nomatch andalso
re:run(Password, "[a-z]") =/= nomatch andalso
re:run(Password, "[0-9]") =/= nomatch andalso
re:run(Password, "[^A-Za-z0-9]") =/= nomatch andalso
re:run(Password, AccountName) =:= nomatch

Как применять правила сложности пароля вZotonic

Ответы [ 2 ]

1 голос
/ 05 октября 2010

Что вы можете сделать, это реализовать его как проверку формы. По линии других проверок.

Мне было интересно, есть ли доступный javascript, который показывает надежность пароля. (Как светофор, зеленый хорошо, красный действительно не хорошо.)

Проверка может быть приложена с помощью {% validate %} scomp.

Простую проверку пароля можно выполнить, создав одно регулярное выражение и прикрепив его к полю пароля с помощью format validator http://zotonic.com/documentation/634/format

Для предложенной вами функции или функции «светофора» может быть лучше создать специальный валидатор. Или, что мы добавили поддержку пользовательского валидатора LiveValidation, к которому вы затем передаете функцию Javascript для проверки.

0 голосов
/ 06 октября 2010

Мой коллега указал мне на:

^.*(?=.{10,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$

Полное объяснение доступно от оригинального автора на http://davidhayden.com/blog/dave/archive/2004/09/25/501.aspx.

Имеется небольшая ошибка при использовании в Zotonic (вероятно, из-за странностей в модуле re), поэтому я изменил \d на [0-9] и уменьшил необходимую длину до 8:

^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$

Его можно применить в _action_dialog_set_username_password.tpl, заменив валидатор присутствии :

{% validate id="new_password" type={presence} %}

с форматом валидатор как Марк W описан в Как применять правила сложности пароля в Zotonic? :

{% validate id="new_password" type={format pattern="^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$"} %}
...