时间:2010-07-26 18:01:41

标签: cakephp permissions acl

1 个答案:

答案 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