身份验证 – CakePHP – 将编辑限制为您自己的“数据”

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了身份验证 – CakePHP – 将编辑限制为您自己的“数据”脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
目前我使用Auth component用户登录/注销 – ACL被定义为在用户组(访客,用户,管理员)之间进行排序 – 具有明显的限制;管理员能够访问所有内容,用户只能访问用户控制器中的编辑,并且访客只能看到显示/索引/视图等.

现在为了用户编辑另一个用户我有一个名为isOwner()的函数,它基本上检查你是否正在尝试编辑自己的配置文件;并检查是否是管理员试图编辑.如果用户是他们尝试编辑的内容所有者,那么它允许它,否则它只是重定向闪存消息.

阅读了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()以允许编辑他的个人资料.

解决方法

[我决定将此作为答案发布,因为它包含代码示例]

您可以创建一个组件(或函数)并在app_controller中使用beforeFilter()回调,这样您就不需要手动将函数添加到所有控制器.

此外,您可以为操作使用多个前缀(请参阅核心中的Routing.PRefix),这样可以更轻松地控制访问.就像是:

[app_controller.PHP]

function beforeFilter() {
    if(isset($this->params['prefix']) && $this->params['prefix'] == 'admin'){
         if(!isAdmin() || !isOwner())
             $this->cakeError('error404');
    }
}

[users_controller.PHP中]

function admin_edit($id = null){
        ... // edit as usual
    }

在LAMP堆栈中,您的瓶颈通常在数据库

我的蛋糕问题是它的查询次数.有一次,我看到我的“联系”页面只进行了21次查询,以检索数据结构,以及此公共页面的权限.

证明使用ACL访问数据的唯一方法是权限是动态的,即“用户#29可以编辑用户#12,因为管理员后台决定”.但是,如果您有访问数据的静态规则(例如“用户只能编辑自己的信息,管理员可以编辑所有内容”),那么当您已经知道答案时,执行查询是无用的,因为此规则不会及时更改.

所以这一切都取决于你的应用程序..最后,最后一个想法,如果你仍然计划进行更多的查询= P你可以set the authorize method of the Auth component.但是使用ACL组件这样,在我看来似乎是一个坏主意

干杯!

脚本宝典总结

以上是脚本宝典为你收集整理的身份验证 – CakePHP – 将编辑限制为您自己的“数据”全部内容,希望文章能够帮你解决身份验证 – CakePHP – 将编辑限制为您自己的“数据”所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。