2014-10-03 121 views
0

我正在使用CakePHP 2.3.6。在一個項目中,我實施了Acl。我跟着官方給出的教程,填充acos表由cake's shell scripting,使用AclExtras插件,然後使用「定製」 initDb功能填充的aros_acos表。CakePHP 2.x Acl

現在一切正常,表格填充成功。所以,我認爲我不需要allow()/deny()函數,我之前用它來編寫Authorization。所以我從相應控制器的beforeFilter()功能中刪除了這些功能。但是,當我刪除它們時,我無法訪問我整個項目中的任何頁面(fucnction)。

爲了填充acos表我用這個命令:

./Console/cake AclExtras.AclExtras aco_sync 

爲了填充aros_acos表我定製了initDB()並把它放在Users控制器並運行它。

所有表被填充,一切都是美好的,但它不工作,我實現ACL之前allow()/deny()功能定義。

我的問題是,如果我使用Acl,如果我有存儲在database所有ARO小號& ACO s,而如果定義在database所有permissions,那麼爲什麼我需要那些allow()/deny()功能呢?如果我需要這些,那我爲什麼要用Acl?我的項目沒有Acl實施,沒有allow()/deny()功能。

那麼,我該怎麼辦?

任何人都可以幫助我嗎?

謝謝。

回答

0

好吧,

最後我得到了ACL的工作。我發現它很容易,我只需要知道shellscrpting。我一直知道它在CakePHP中的執行情況很好,我只需要讓它在我的項目中工作即可。

首先,我們必須從我們的shell/command prompt製作PHPCakePHPexecutable。我做了Windows(7),稍後嘗試Linux & MAC

首先,如果你沒有PHP可執行從命令提示符下,轉到My Computer->Properties->Environment Variables(forgot exact path, but you will get it easily)。然後將此c:\wamp\bin\php\php5.3.13;粘貼到Environment Variable中,其中php5.3.13是版本特定的。

之後,粘貼在同一個地方:cakephp\lib\Cake\Console。您可以將cakephp文件夾永久複製到您的htdocs/www,供以後使用。

現在,在命令提示符下運行這樣的:cake bake all,並按照指示。您必須擁有一個數據庫,並在您的config.php文件中進行配置。

到現在爲止,你應該準備好與新創建的項目。現在按照CakePHP documentationACL。請記住,您希望爲所有類型的用戶打開哪些功能/方法,可以通過allow()AppController或特定控制器明確指定。

假設,你需要pages/index,users/login,users/signUp - 這3頁/功能是全部打開的。所以,allow()他們在AppControllerPages & Users控制器。