在 Kohana Auth 中强制使用强密码
Enforcing strong passwords in Kohana Auth
我正在尝试使用 Auth 在我的 Kohana 应用程序中强制使用强(呃)密码,方法是使用以下正则表达式要求至少一个大写字母、一个小写字母、一个数字、一个非字母数字(特殊字符) ) 和至少 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
不会给出任何类型的错误消息。
知道为什么会发生这种情况以及解决方法吗?
明白了 - 您必须将正则表达式添加到 get_password_validation
函数(在同一模型中),否则它不会输出任何错误消息。
public static function get_password_validation($values) {
return Validation::factory($values)
->rule('password', 'min_length', array(':value', 8))
->rule('password', 'regex', array(':value', '/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,}$/'))
->rule('password_confirm', 'matches', array(':validation', ':field', 'password'));
}
如果添加,需要删除 rules()
函数中的正则表达式,否则无法登录,因为它对不包含任何特殊字符的散列字符串运行正则表达式检查。
希望这对某人有所帮助。
我正在尝试使用 Auth 在我的 Kohana 应用程序中强制使用强(呃)密码,方法是使用以下正则表达式要求至少一个大写字母、一个小写字母、一个数字、一个非字母数字(特殊字符) ) 和至少 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
不会给出任何类型的错误消息。
知道为什么会发生这种情况以及解决方法吗?
明白了 - 您必须将正则表达式添加到 get_password_validation
函数(在同一模型中),否则它不会输出任何错误消息。
public static function get_password_validation($values) {
return Validation::factory($values)
->rule('password', 'min_length', array(':value', 8))
->rule('password', 'regex', array(':value', '/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,}$/'))
->rule('password_confirm', 'matches', array(':validation', ':field', 'password'));
}
如果添加,需要删除 rules()
函数中的正则表达式,否则无法登录,因为它对不包含任何特殊字符的散列字符串运行正则表达式检查。
希望这对某人有所帮助。