这可能是一个重复的问题,但我已经完成了所有其他答案,但没有一个对我有用:(
以下是我在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函数并将我带到登录页面。请帮助!
答案 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;
}
// ...
}
所以解决方案应该是首先登录。