gpt4 book ai didi

cakephp - Cake的ACL组件及 "ownership"的概念

转载 作者:行者123 更新时间:2023-12-02 21:03:11 27 4
gpt4 key购买 nike

我一直在研究 Cake 的 Auth/ACL 组件。我已经阅读了文档并完成了教程,但我仍然对我实际可以完成的事情不满意。我见过coupleother接近,但我不能说,因为我确实有一个直接的赢家。在我读过的任何教程/博客文章/文档中,“所有权”的用例都没有得到充分的涵盖。

我希望描述我的用例,如果有人可以建议一种方法,我洗耳恭听,否则我可能只能尝试自己做一些事情;o)

<小时/>

这基本上模仿了一组简单的博士办公室。

对于 ARO 来说开始很容易:

  • 第 1 组:管理员(当然)
  • 第 2 组:看护者
  • 第 3 组:成员

组和用户之间存在“hasOne”关系(即一个用户只能属于一个组)。

现在我们使用树形结构的 ACO,如 Aidan Lister considers :

/root
/practice
/practice_profile
/practice_updates
/patients
/entries
/profiles
/other_things

每个护理人员都可以参与包括其患者在内的实践。这使得看护者可以访问患者写的任何内容。最重要的是,患者将只能能够看到/编辑/等等......他拥有的任何东西。我读过的任何文章中都没有具体涉及这一点。我知道对于文件系统类型的权限来说,这是很常见的,但我什至不想走这条路......

在 Cake 的核心中使用 Auth/ACL,它并没有真正获得这样的权限。它似乎在说“好吧,如果你是 X 组的一部分,那么你就可以执行 Y 功能。”因此,似乎属于 members 组的任何用户都可以访问所有其他成员的内容,并且所有管理员都可以访问所有实践。

还有其他人遇到过这种用例吗?有进一步阅读的建议吗?有已知的解决方案吗?

编辑:所以所有的答案都很棒,所以大家都赞成。我强烈建议您查看由 bancer 提供的我没有找到的帖子,因为它最终向我指出了一些很酷的东西。但最终,答案都隐藏在文档中,我只是第一次没有完全“明白”。另外,当我读到 cakeqs 时,我顿时恍然大悟。关联。所以答案交给本杰明。

最佳答案

也许这会给你一些启发。这是我开发的 CMS 的 acos 表的摘录。通过使用其他明显未使用的 model 列,我获得了额外的控制层,可以让我设置页面的可访问性。

 id    parent_id  model  foreign_key  alias          lft  rght
1462 1176 page NULL about-us 285 286 #display page url
1515 1176 page NULL leo-test 291 292 #display page url
1195 1176 NULL NULL ajaxSetStatus 261 262 #function
1194 1176 NULL NULL walkTree 259 260 #function

然后我在 Controller 中执行类似的操作,以查看当前用户是否有权查看请求的页面(如果未登录,用户默认为匿名):

function view($url=null)
{
$nD = $this->NodeDescriptor->findByUrl($url);
if(!$nD) $this->redirect(array('action'=>'error'));
$user = ($this->Auth->user())?$this->Auth->user():'Anonymous';
if(!$this->Acl->check($user,"{$url}"))
$this->redirect($this->referer());
...

关于cakephp - Cake的ACL组件及 "ownership"的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3421197/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com