Jay*_*Jay 6 model-view-controller acl cakephp
我希望能够基于ACL显示或隐藏视图中的某些元素.例如,如果用户正在查看我的用户/索引视图,如果他没有删除用户的权限,我不想显示"删除用户"元素.如果他确实有权限修改的用户,我也想显示"编辑用户"链接.
我可以一起破解这个,但对Cake来说是个新手,我希望有一个优雅的解决方案.我所做的最好的工作包括将逻辑保存在两个地方,所以维护是很难的.
谢谢!
没有通用的“优雅的解决方案”:)我也一直想做这样的事情。无论如何,你可以怎么做:
覆盖应用程序目录中的 Html Helper - 从 /cake/libs/views/helpers/html.php 复制到 /app/views/helpers/html.php 并在 Html::link 函数中进行一些更改。
例如,您可以检查 url 是否包含编辑或删除操作。
另一部分是从控制器传递适当的参数。在 AppController::beforeFilter 中,您可以读取用户的权限(最好缓存起来)并将其通过特殊的 Auth 变量传递给视图。
因此,当您在视图中拥有权限时,可以轻松修改链接。:)
正如我所说,我还没有在实际例子中这样做,但这是我会这样做的方式。
有 1 个不好的地方 - 如果原始的 Html 助手发生变化,你的助手将保持不变。但我相信 Html 助手已经足够成熟,所以对我来说不是一个大问题。