答案 0 :(得分:0)
如果您使用内置的Auth和ACL组件,您可以让CakePHP自动为您处理事情。首先,您可以确保App文件夹中有app_controller.php文件。我看起来像这样:
<?php
class AppController extends Controller {
var $helpers = array('Form', 'Html', 'Javascript', 'Time');
var $components = array( 'Acl', 'Auth', 'Session', 'Cookie');
function beforeFilter() {
$this->Auth->authorize = 'actions';
$this->Auth->actionPath = 'controllers/';
$this->Auth->authError = ' Access Denied!';
$this->Auth->loginRedirect = '/registrations';
$this->__checkAuth();
}
private function __checkAuth() {
$currentUser = $this->Auth->user();
$currentUser = $currentUser['User'];
$this->set(compact('currentUser'));
}
}
?>
如果您正在授权“操作”,请尝试在app_controller.php文件中包含该代码,或者如果您还没有该代码,请创建一个代码。然后开始浏览以查看它是否进行了任何更改。
如果你在每个控制器的beforeFilter中都有自定义代码,你还需要为每个控制器添加一行代码。
function beforeFilter(){
parent::beforeFilter();
}
放在控制器中的任何beforeFilter(甚至是空白的)将覆盖AppController的beforeFilter,除非您使用上面的代码专门调用AppController的beforeFilter。
您还可以在此处找到有关使用CakePHP ACL的最佳教程:http://aranworld.com/article/161/cakephp-acl-tutorial-what-is-it