我是kohana 3.2的新手,我找不到任何重新编写auth模块的答案。 自从我更改用户模型以扩展model_auth_user以来,这是我的代码和有力的理由 验证不是正确完成的。密码字段可以插入为空,如果password_confirm和密码字段不同,则不会捕获任何重复信息并且相同:
public function action_new()
{
if ($_POST){
try
{
$user = ORM::factory('user')
->values(array(
'username' => $_POST['username'],
'email' => $_POST['email'],
'password' => $_POST['password'],
'password_confirm' => $_POST['password_confirm']));
$user->save();
$user->add('roles', ORM::factory('role', array('name' => 'login')));
$this->request->redirect('user/index');
}
catch (ORM_Validation_Exception $e)
{
$errors = $e->errors();
}
}
$view = View::factory('user/new')
->bind('errors',$errors); //pass the info to the view
$this->response->body($view); //show the view
}
感谢
答案 0 :(得分:0)
您可以覆盖run_filter()方法以强制Kohana在空值的情况下忽略密码过滤。例如,将此代码放入User_Model:
protected function run_filter($field, $value)
{
if ($field === "password" AND $value === "")
return "";
parent::run_filter($field, $value);
}
答案 1 :(得分:0)
尝试使用Model_Auth_User :: create_user();
中的代码示例$user->save(Model_User::get_password_validation($_POST)->rule('password', 'not_empty'));
此验证在过滤器(散列密码)之前执行。散列后 - 空白密码变为非空字符串。