cakePHP 权限使用 ACL 并检查模型上的 user_id

Posted

技术标签:

【中文标题】cakePHP 权限使用 ACL 并检查模型上的 user_id【英文标题】:cakePHP permissions using ACL and checking user_id on the model 【发布时间】:2013-08-11 02:48:13 【问题描述】:

我的 cakephp 应用程序在启用 acl 权限的情况下运行。我已允许一组用户能够访问我的一个控制器上的所有操作,但有时如果他们的用户 ID 与他们尝试访问的模型中的用户 ID 值不匹配,我希望能够拒绝访问或基于其他一些任意标准。

那么.. 当用户已经可以从 ACL 组件访问操作时,拒绝用户访问操作的常规方法是什么?

【问题讨论】:

【参考方案1】:

TLDR:不要使用 ACL。 (这很可能是矫枉过正,而且在您的项目中似乎并不理想)。

根据您的情况,有很多选择,但归根结底是制定一种方法来检查他们是否有权在那里/正在这样做。

无论是控制器中的方法、模型,还是可以在所有模型中使用的行为……等等。

我从您的描述中猜测,理想的方法是使用“hasAccess”或其他方法创建行为。然后,在您要限制访问的“某些操作”中,运行该方法 - 如下所示:

if(!$this->MyModel->hasAccess($userId)) $this->redirect('/');

【讨论】:

以上是关于cakePHP 权限使用 ACL 并检查模型上的 user_id的主要内容,如果未能解决你的问题,请参考以下文章

对 CakePHP 应用程序使用 ACL 或简单权限

CakePHP 通过组名而不是 ID 检查权限

Acl-cakePHP 中组的通用权限

使用 C++ 递归扫描目录上的 ACL

Cakephp auth 和 acl 未登录用户组

AWS S3权限 - put-bucket-acl出错