2

有没有办法将身份验证错误消息绑定到身份验证组件的范围条件?

例如说我有:

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

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

这可能吗?

4

1 回答 1

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

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

我希望这有帮助!

于 2013-05-07T18:16:06.767 回答