cakephp acl控制插件的访问(FullCalendar)
我正在cake 2.4和FullCalendar插件中使用acl(遵循cake的教程) 至于FullCalendar插件,权限不起作用。我目前正在使用控制台创建ARO、ACO和授予权限 用户表: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 -----
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:…”,您知道我该怎么做吗?