据我了解,CakePHP的isAuthorized()
函数用于检查登录用户是否具有执行给定操作的一组权限;换句话说,它不是用于检查用户是否具有正确的登录/密码(这是login()
的用途)。由于我正在编写的应用程序实际上没有任何权限,但只需要检查用户是否登录,我写了以下isAuthorized()函数:
public function isAuthorized() {
return true;
}
但是......感觉错误。我看看上面的函数,坦率地说,它看起来像TheDailyWTF。 (如果我没有isAuthorized()
函数,CakePHP会抱怨,所以我无法删除它。)
所以我想要确保我没有错:如果我的应用只需要查看用户是否登录,没有任何进一步的权限,那么上述功能就足够了?
答案 0 :(得分:5)
我认为你正在使用Cake的Auth组件,因为这是isAuthorized()函数所在的位置。
最快的方法是在控制器的beforeFilter()中定义“允许的操作”。
例如,允许所有操作的所有访问权限:
/**
* Sets all actions to be allowed
*/
public function beforeFilter() {
parent::beforeFilter();
if (isset($this->Auth)) {
$this->Auth->allow('*');
}
}
允许访问“索引”& '查看'操作:
/**
* Allow access to index & view actions
*/
public function beforeFilter() {
parent::beforeFilter();
if (isset($this->Auth)) {
$this->Auth->allowedActions = array('index', 'view');
}
}
修改强>
以下评论:
您可以将Auth组件的 authorize 属性设置为“controller”,然后定义回调。因此,您的控制器将包含类似于:
的内容public function beforeFilter() {
parent::beforeFilter();
$this->Auth->authorize = 'controller';
}
public function isAuthorized() {
return true;
}
通过这种方式,您不必更改核心,它可以满足您的需要。