2014-10-03 100 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控制器。