对 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

使用 CakePHP 'Acl' 组件

Acl-cakePHP 中组的通用权限

如何绕过 CakePHP 中 requestAction 的 ACL 查询?

Cakephp auth 和 acl 未登录用户组

cakephp ACL 创建 ARO 但 lft 和 rght 值为空