0

我有以下情况:多个视图使用可以上传文件并通过 AJAX 检索以前上传的列表的内容编辑器。为此,我最终为每个控制器添加了两个操作。相反,我只想拥有一个通用的、单一用途的 EditorController 来为我处理编辑器交互。

问题在于访问权限:我希望 EditorController 检查请求是否来自有效来源(这意味着当前用户有权访问的已知操作)。具体来说,检查请求是否来自类似“/posts/edit/1”的内容,并且这是我被允许使用的操作。

这可以做到吗?实现相同结果的更好方法是什么?我目前已经将功能打包到我重用的组件中。但我仍然重复自己向所有控制器添加相同的两个操作。

编辑:从下面的评论中,我指向了http://book.cakephp.org/2.0/en/core-libraries/components/security-component.html#restricting-cross-controller-communication。我想要实现的东西与 and 非常相似SecurityComponent::$allowedControllersSecurityComponent::$allowedActions只是我宁愿不明确地将允许的控制器或操作列入白名单,而是从调用者那里继承访问权限。

4

1 回答 1

1

使用 Security 组件可能会给您想要的东西;

http://book.cakephp.org/2.0/en/core-libraries/components/security-component.html

[更新] 虽然安全组件会检查发布的表单是否为有效表单,但它不会检查当前用户是否有权访问控制器/操作。

为此,您需要结合访问控制实施授权系统。这可以是针对某些操作(“用户是否登录?”)的简单“访问”控制,或者是使用访问控制列表 (ACL) 的更精细的方法。

cakephp 手册有一些例子。我会发布一些链接:

身份验证 http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html

访问控制列表 http://book.cakephp.org/2.0/en/core-libraries/components/access-control-lists.html

还有一个关于http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html http://book.cakephp.org/2.0/en/tutorials-的教程 and-examples/simple-acl-controlled-application/simple-acl-controlled-application.html

于 2013-02-03T00:21:50.130 回答