cakephp acl控制插件的访问(FullCalendar)

cakephp acl控制插件的访问(FullCalendar),cakephp,plugins,acl,Cakephp,Plugins,Acl,我正在cake 2.4和FullCalendar插件中使用acl(遵循cake的教程) 至于FullCalendar插件,权限不起作用。我目前正在使用控制台创建ARO、ACO和授予权限 用户表: id | username | role_id ----------------------- 12 | company | 2 13 | regular | 3 14 | admin | 1 角色表: id | role -----

我正在cake 2.4和FullCalendar插件中使用acl(遵循cake的教程)

至于FullCalendar插件,权限不起作用。我目前正在使用控制台创建ARO、ACO和授予权限

用户表:

id | username | role_id
-----------------------
12 | company  | 2       
13 | regular  | 3      
14 | admin    | 1      
角色表:

id | role          
--------------------
12 | Administrador 
13 | Company       
14 | Regular       
aro表:

+----+-----------+-------+-------------+-------+------+------+
| id | parent_id | model | foreign_key | alias | lft  | rght |
+----+-----------+-------+-------------+-------+------+------+
|  1 |      NULL | Role  |           1 | NULL  |    1 |    4 |
|  2 |      NULL | Role  |           2 | NULL  |    5 |    8 |
|  3 |      NULL | Role  |           3 | NULL  |    9 |   12 |
|  4 |         1 | User  |          14 | NULL  |    2 |    3 |
|  5 |         2 | User  |          12 | NULL  |    6 |    7 |
|  6 |         3 | User  |          13 | NULL  |   10 |   11 |
+----+-----------+-------+-------------+-------+------+------+
插件位于以下路径中: 蛋糕/应用程序/插件/完整日历

-Controller
    -FullCalendarAppController
    -EventsController
    -FullCalendarController
    -EventTypesController
-Model
    -Event
    -EventType
    -FullCalendar
    -FullCalendarAppModel
-View
    -Events: add, edit, feed, index, view
    -EventTypes: add, edit, index, view
    -FullCalendar: index
    -Layouts 
-webroot
我创建了这个acos:

cake acl create aco controllers FullCalendar
cake acl create aco controllers/FullCalendar index
cake acl create aco controllers Events
cake acl create aco controllers/Events index
cake acl create aco controllers/Events view
cake acl create aco controllers/Events add
我需要这些许可:

管理员:好的

公司:索引,事件列表视图

/cake/full_calendar/events
/cake/full_calendar/events/view/1
/cake/full_calendar/events
常规:事件列表的索引

/cake/full_calendar/events
/cake/full_calendar/events/view/1
/cake/full_calendar/events
我用这些来分配权限:

cake acl grant Role.1 contollers/Fullcalendar all
cake acl grant Role.2 contollers/Fullcalendar/index all
cake acl grant Role.2 contollers/Fullcalendar/view all
cake acl grant Role.3 contollers/Fullcalendar/index all
这是我得到的错误:

Warning (512): DbAcl::check() - Failed ACO node lookup in permissions check. Node references:
Aro: Array
(
    [User] => Array
        (
            [id] => 14
            [username] => admin
            [role] => admin //this atribute was for testing, but i'm not using it anymore so I guess it doesn't really matters.
            [role_id] => 1
            [Role] => Array
            (
                [id] => 1
                [role] => Administrador
                [alias] => 
            )

    )

)

Aco: controllers/FullCalendar/Events/view [CORE\Cake\Model\Permission.php, line 103]
另外,你介意告诉我aros\u acos的表“\u创建、\u读取、\u更新、\u删除”是什么意思吗


提前感谢。

您需要在ACO路径中添加插件名称以正确解析ACO

您当前的路径不正确:

controllers/Events/view
它应该是什么:

controllers/FullCalendar/Events/view
因此,要创建ACO,首先为插件创建一个节点:

cake acl create aco controllers FullCalendar
然后像下面那样继续:

cake acl create aco controllers/FullCalendar FullCalendar
cake acl create aco controllers/FullCalendar/FullCalendar index
cake acl create aco controllers/FullCalendar Events
cake acl create aco controllers/FullCalendar/Events index
cake acl create aco controllers/FullCalendar/Events view
cake acl create aco controllers/FullCalendar/Events add
其他调试提示: 注意你所犯的那个著名的错误;在实现ACL时,您会多次看到它。它会告诉你它在期待什么,却找不到什么。 例如,在您的情况下,
警告(512):DbAcl::check()-权限检查中的**ACO**节点查找失败。
因此,请检查所需的ACO节点引用:

Aco: controllers/FullCalendar/Events/view

这表明它正在查找上述节点,但找不到它。

谢谢,ir工作正常!作为旁注,我希望在用户想要编辑例如事件时显示一条flash消息,而不是“警告(512):DbAcl:…”,您知道我该怎么做吗?