Cakephp auth:将错误消息绑定到范围条件

时间:2013-05-07 17:38:14

标签: cakephp authentication cakephp-2.1

有没有办法将auth错误消息绑定到auth组件的范围条件?

例如说我有:

'Auth' => array('authenticate' => array('Blowfish' => array('scope' => array('User.activated' => 1))));

如果范围条件失败,我想设置错误。如果用户/传递不正确,我需要能够将其与出现的错误区分开来。

这可能吗?

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(..);
    }
}

我应该澄清一下,在配置身份验证组件时不应指定范围条件。

我希望这有帮助!