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

Я хотел бы применить политику паролей в 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 ответа

Решение

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

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

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

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

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

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

^.*(?=.{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])(?=.*[@#$%^&+=]).*$"} %}
Другие вопросы по тегам