有没有办法将身份验证错误消息绑定到身份验证组件的范围条件?
例如说我有:
'Auth' => array('authenticate' => array('Blowfish' => array('scope' => array('User.activated' => 1))));
如果范围条件失败,我想设置一个错误。如果用户/通行证不正确,我需要能够将其与出现的错误区分开来。
这可能吗?
有没有办法将身份验证错误消息绑定到身份验证组件的范围条件?
例如说我有:
'Auth' => array('authenticate' => array('Blowfish' => array('scope' => array('User.activated' => 1))));
如果范围条件失败,我想设置一个错误。如果用户/通行证不正确,我需要能够将其与出现的错误区分开来。
这可能吗?
是的,我对 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(..);
}
}
我应该澄清一下,您不应该在配置身份验证组件时指定范围条件。
我希望这有帮助!