有没有办法将auth错误消息绑定到auth组件的范围条件?
例如说我有:
'Auth' => array('authenticate' => array('Blowfish' => array('scope' => array('User.activated' => 1))));
如果范围条件失败,我想设置错误。如果用户/传递不正确,我需要能够将其与出现的错误区分开来。
这可能吗?
答案 0 :(得分:4)
是的,我对CakePHP的源代码有一个根源,我得出的结论是,在使用作用域条件时它没有做任何花哨的事情,它只是将它们作为附加查询条件附加。它将找到与用户名/密码组合匹配的用户和任何范围条件,或者它不会。
一种可能的解决方案是手动登录用户并检查激活的字段,如下所示:
public function login()
{
if ($this->request->is('post')) {
if ($this->Auth->login($this->data['User'])) {
// check activated field
if ($this->Auth->user('activated') == 1) {
// user is activated
$this->redirect(...);
} else {
// user is not activated
// log the user out
$this->Auth->logout();
// redirect to an error page for inactive users
$this->redirect(..);
}
}
// redirect to an error page for wrong username/password
$this->redirect(..);
}
}
我应该澄清一下,在配置身份验证组件时不应指定范围条件。
我希望这有帮助!