CakePHP 2.4.5 Auth - isAuthorized未被调用

时间:2014-03-11 07:24:47

标签: php cakephp authentication authorization

这可能是一个重复的问题,但我已经完成了所有其他答案,但没有一个对我有用:(

以下是我在AppController中的代码:

public $components = array(
    'Auth',
    'Session'
);

public function beforeFilter() {
    $this->Auth->authorize = 'Controller';
    $this->Auth->authenticate = array(
        'Form' => array(
            'fields' => array('username' => 'email', 'password' => 'password'),
            'scope' => array('User.active' => 1),
            'passwordHasher' => 'Blowfish'
        )
    );
}

public function isAuthorized($user) {
    debug($this->request->params);
    exit;
}

我没有在任何其他控制器中覆盖beforeFilter或isAuthorized函数。无论在哪个页面打开它都不会调用isAuthorized函数并将我带到登录页面。请帮助!

1 个答案:

答案 0 :(得分:1)

只有在成功验证后才能进行授权检查,请参阅AuthComponent::startup()

public function startup(Controller $controller) {
    // ...

    // authenticate first 
    if (!$this->_getUser()) {
        return $this->_unauthenticated($controller);
    }

    // then authorize
    if ($this->_isLoginAction($controller) ||
        empty($this->authorize) ||
        $this->isAuthorized($this->user())
    ) {
        return true;
    }

    // ...
}

所以解决方案应该是首先登录。