【发布时间】:2011-07-20 13:27:26
【问题描述】:
目前我使用 Auth 组件让用户登录/注销 - ACL 被定义为在用户组(Guests、Users、Admins)之间进行排序 - 有明显的限制;管理员可以访问所有内容,用户只能访问用户控制器中的编辑,而访客只能看到显示/索引/视图等。
现在为了防止用户编辑另一个用户 - 我有一个名为 isOwner() 的函数,它基本上检查您是否正在尝试编辑自己的个人资料;并检查是否是管理员尝试编辑。如果用户是他们正在尝试编辑的内容的所有者,那么它会允许它,否则它只会使用 Flash 消息进行重定向。
阅读了http://book.cakephp.org/view/1245/Defining-Permissions-Cake-s-Database-ACL - 我想知道是否可以在 ACL 中定义它?
类似的东西:
$this->Acl->allow(array('model' => 'User', 'foreign_key' => $id), 'Users', 'edit', $id)
虽然我没有深入挖掘,但我假设我必须使用上面的行为每个注册的新用户制作某种 beforeSave() 以允许编辑他的个人资料。
【问题讨论】:
-
不是真的 - 我实际上想使用 ACO_ARO 获得权限,而不是离开它。
-
Cake 的 ACL 使用起来很痛苦,不知道你为什么对它如此热衷。但是既然你使用了 Auth,或许我可以建议你将 $this->Auth->user() 的内容设置为静态变量,然后你就可以在你的模型方法中访问这些值了。另外,我不会使用回调,因为它会使调试变得困难。
-
我不同意 - 我认为 ACL 非常强大,并且可以轻松地在大型应用程序中获得用户权限。我确实有 $this->Auth->user() 作为可随处访问的静态变量,但它与上述问题并没有真正相关?我发现回调很好 - 并不比 ACL 本身更难。
-
嘿,shaz,用户如何访问另一个配置文件? users/edit 操作不应采用 id 参数,它应始终假定发出请求的登录用户的 id。我错过了什么吗?
标签: authentication cakephp cakephp-1.3 access-control