CakePHP ACL数据库设置:ARO / ACO结构?

代码海岸 毕业设计 1

我正在努力在 CakePHP 中实现 ACL。在阅读了 cake 手册 中的文档以及其他几篇教程、博客文章等之后,我发现 Aran Johnson 的优秀教程帮助填补了许多空白。他的例子似乎与我在一些地方看到的其他例子发生冲突——特别是在他使用的 ARO 树结构中。

在他的 示例 中,他的用户组被设置为级联树,最通用的用户类型位于树的顶部,其子级为每个更受限制的访问类型分支。在其他地方,我通常将每个用户类型视为相同通用用户类型的子级。

如何在 CakePHP 中设置 ARO 和 ACO?任何和所有提示表示赞赏!

回复

共1条回复 我来回复
  • 毕设港湾
    这个人很懒,什么都没有留下~
    评论

    CakePHP 的内置 ACL 系统非常强大,但在实际实现细节方面的文档却很少。我们在许多基于 CakePHP 的项目中成功使用的系统如下所示。

    这是对其他地方记录 的一些组级访问系统的修改。我们系统的目标是建立一个简单的系统,用户在组级别上获得授权,但他们可以对他们创建的项目或每个用户拥有特定的附加权限。我们希望避免必须为表中的每个用户(或者,更具体地说,为每个 ARO)创建一个特定条目 aros_acos

    我们有一个用户表和一个角色表。

    用户

    user_id, user_name, role_id

    角色

    id, role_name

    为每个角色创建 ARO 树(我们通常有 4 个角色 - 未授权访客 (id 1)、授权用户 (id 2)、站点管理员 (id 3) 和管理员 (id 4)):

    cake acl create aro / Role.1

    cake acl create aro 1 Role.2 ... etc ...

    在此之后,您必须使用 SQL 或 phpMyAdmin 或类似工具为所有这些添加别名,因为 cake 命令行工具不会这样做。我们为所有人使用“角色-{id}”和“用户-{id}”。

    然后我们创建一个 ROOT ACO -

    cake acl create aco / 'ROOT'

    然后为该 ROOT 下的所有控制器创建 ACO:

    cake acl create aco 'ROOT' 'MyController' ... etc ...

    到目前为止一切正常。我们在名为 aros_acos 的表中添加了一个附加字段 _editown ,我们可以将其用作 ACL 组件的 actionMap 中的附加操作。

    CREATE TABLE IF NOT EXISTS `aros_acos` (
    `id` int(11) NOT NULL auto_increment,
    `aro_id` int(11) default NULL,
    `aco_id` int(11) default NULL,
    `_create` int(11) NOT NULL default '0',
    `_read` int(11) NOT NULL default '0',
    `_update` int(11) NOT NULL default '0',
    `_delete` int(11) NOT NULL default '0',
    `_editown` int(11) NOT NULL default '0',
    PRIMARY KEY  (`id`),
    KEY `acl` (`aro_id`,`aco_id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
    
    0条评论

发表回复

登录后才能评论