首先我们说我的模型类是User
和Entries
。
我已阅读以下教程:http://book.cakephp.org/2.0/en/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.html我看到他们使用名为Group
的额外模型,以便为用户分配角色。
在Group
中使用role
模型而不是User
属性有什么不同(User.role ='admin')
将Group
添加到ARO
而不是将User
添加到ARO
,然后使用别名有什么区别。
如果我实施ACL,这是否意味着我不再需要管理路由?
PD:我是ACL列表的新手,我总是使用类似if($user['role'] == 'admin')
的内容授权操作。
答案 0 :(得分:2)
这是处理身份验证的两种不同方式。如果您只有一些控制器和一个或两个管理员,那么使用现在的User.role
方法可能会很好。如果您有多个控制器和应该有权访问您站点不同部分的各种用户,则应使用ACL。
您不需要创建Groups
来使用ACL,但它可以让生活变得更轻松。您可以创建两个或三个组,为这些组设置权限,然后将每个用户分配给其中一个组,而不是为数十个不同的用户分配权限。然后,如果您需要添加新控制器 - 甚至是新视图 - 您只需要在组级别而不是每个用户执行此操作。 (看看this demo。现在想象你有另外10个控制器/ 50个动作,你必须为20或30个用户而不是4个组设置这些权限。)当然,即使你正在设置权限在Group
级别,如果需要,您可以始终在User
级别覆盖它们。
管理员路由与ACL分开。路由只控制可用于访问页面的URL。 (参见Cake PHP - Prefix Routing。您可以在没有管理员路由的情况下使用ACL控制,并且可以使用没有ACL控制的管理路由。