2010-07-26 123 views
0

檢查我的應用程序,我看到每個用戶都可以訪問它中的所有操作。 我使用cakePhp內置ACL組件... 通過終端顯示正確檢查權限是允許用戶或不調用某個操作。但是,一旦我在瀏覽器上檢查應用程序,所有用戶都可以訪問每個操作。任何線索可能會做什麼?CakePhp ACL權限

+1

請給代碼的一部分,你正在檢查你的應用程序的權限。 – 2010-07-26 18:05:50

回答

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(); 
} 

置於控制器將覆蓋的AppController的beforeFilter除非專門使用上面的代碼調用的AppController的beforeFilter不限beforeFilter(即使是空白的)。

您還可以找到一些最好的教程就到這裏使用CakePHP的ACL:http://aranworld.com/article/161/cakephp-acl-tutorial-what-is-it