对 CakePHP 应用程序使用 ACL 或简单权限
Posted
技术标签:
【中文标题】对 CakePHP 应用程序使用 ACL 或简单权限【英文标题】:Using ACL or simple permissions for CakePHP app 【发布时间】:2011-12-16 23:37:38 【问题描述】:我正在构建一个需要 3 个用户级别(成员、管理员、管理员)的简单网站,并且目前正在使用基于每个组设置权限的 ACL。现在,这一切都很好,但我想知道在 users 表中包含一个包含 tinyint 的 role 列是否更好用那个。
我考虑这个的原因如下。假设我想在页面顶部有一个“管理栏”,我必须检查用户所在的组,但组名可以更改并且不是静态的,role 列将会。这就提出了一个问题,ACL 是否适合具有如此简单权限方案的网站?
【问题讨论】:
这个role
列和你可能已经拥有的有什么区别,这意味着 group_id
列已经是一个 int ?顺便说一句,是的,组名可能会更改,这就是我们使用主键和外键的原因。这些永远不应该改变。 Cakephp ACL 数据表也不例外:即使组名确实存在于 ARO 表中,ACL 逻辑也是基于键的。
【参考方案1】:
有趣 - 我最近刚刚为这样的场景编写了一个简单的 Auth - 我称之为“Tiny”:http://www.dereuromark.de/2011/12/18/tinyauth-the-fastest-and-easiest-authorization-for-cake2/
它应该几乎正是您所需要的。
它确实需要角色存在于会话身份验证中,但您自己管理用户角色。因此,如果您想使用多角色身份验证,您可能必须将其添加到您的登录方法中。
正如您所说 - 核心是一种强大的方法,对于简单的用例来说确实是一种过度杀伤力。 只有一件事:将字段称为“role_id”而不是“role”。
【讨论】:
【参考方案2】:这就是我使用的http://bakery.cakephp.org/articles/watermark86/2010/09/23/user-permissions-based-on-a-routing-prefix
虽然 acl 是正确的方法,但对于像 urs 这样的小/简单的情况,你可以使用它
【讨论】:
以上是关于对 CakePHP 应用程序使用 ACL 或简单权限的主要内容,如果未能解决你的问题,请参考以下文章
cakePHP 权限使用 ACL 并检查模型上的 user_id