Я пытаюсь применить надежные пароли в своем приложении Kohana с помощью Auth, используя следующее регулярное выражение, чтобы потребовать по крайней мере одну букву в верхнем регистре, одну строчную букву, одно число, один небуквенный (специальный символ) и минимум из 8 символов.
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,}$
Регулярное выражение работает, как видно на Rubular. Вот код, который я использую в Kohana Model_Auth_User
, который расширяет ORM
.
public function rules() {
return array(
'password' => array(
array('not_empty'),
array('min_length', array(':value', 8)),
array('regex', array(':value', '/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,}$/'))
)
);
}
Однако при создании новой учетной записи пользователя или изменении пароля существующей это регулярное выражение полностью игнорируется. Однако min_length
из строки выше работает нормально!
Это не позволит мне использовать test
в качестве пароля, потому что он содержит менее 8 символов, но testing123
не выдает никаких сообщений об ошибках.
Любые идеи, почему это происходит и как это обойти?
save
без дополнительной проверки использовать внутренние значения, и это было хешировано методомset
. Таким образом, вы должны использовать необработанные необработанные (POST) значения с дополнительной проверкой. kohanaframework.org/3.3/guide-api/Model_Auth_User#filters, #set, #create - person bato3   schedule 14.03.2017