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