摘要:在中,提供了管理授权逻辑以便控制对资源的访问权限。例如,我们可以利用来确定当前的是否有修改一篇文章的权限。
Introduction
在laravel中,Policies提供了管理授权逻辑以便控制对资源的访问权限。例如,我们可以利用poslicies来确定当前的user是否有修改一篇文章的权限。
生成一个PostPolicy</>复制代码
$ php artisan make:policy PostPlicy
生成的App/Policies/PostPolicy.php如下
</>复制代码
注册PostPolicy
将PostPolicy注册到App/Providers/AuthServiceProvider中,注意要加上注释的编号部分(I,II,III)
</>复制代码
"AppPoliciesModelPolicy",
Post::class => PostPolicy::class, // III
];
/**
* Register any application authentication / authorization services.
*
* @param IlluminateContractsAuthAccessGate $gate
* @return void
*/
public function boot(GateContract $gate)
{
parent::registerPolicies($gate);
//
}
}
定义change方法
在App/Policies/PostPolicy.php中,定义change方法
</>复制代码
user()->id === $post->user_id;
}
}
注意:
1.因为laravel5.1的多用户验证用的是Kbwebs/MultiAuth的,所以,在所有的$user->后面都要加上user(),包括Auth::。
2.官方文档中是这样写的
</>复制代码
public function update(User $user, Post $post)
{
return $user->id === $post->user_id;
}
在update方法中写上了User和Post类,其实写上反而提示错误,不写是对的
3.如果想给adminstrator所有的权限,只需要在PostPolicy.php中添加before方法
如上面所示
控制器验证Policies
</>复制代码
user_gestion = $user_gestion;
$this->blog_gestion = $blog_gestion;
$this->middleware("admin", ["only" => "updateSeen"]);
$this->middleware("ajax", ["only"=> ["updateSeen", "updateActive"]]);
}
/**
* Update "active" for the specified resource in storage
*
* @param IlluminateHttpRequest $request
* @param int $id
* @return Response
*/
public function updateActive(Request $request, $id){
$post = $this->blog_gestion->getById($id);
// authorize验证当前用户是否有修改此文章的权限,如果没有,则返回403 Forbidden
$this->authorize("change", $post);
$this->blog_gestion->updateActive($request->all(), $id);
return response()->json();
}
App/Repositories/BlogRepository.php中部分代码
</>复制代码
/**
* Update "active" in a post
*
* @param array $data
* @param int $id
* @return void
*/
public function updateActive($data, $id){
$post = $this->getById($id);
$post->active = $data["active"] == "true";
$post->save();
}
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/22620.html
摘要:访问控制列表的配置与访问控制列表使用的类别和权限类别组的名称和的关联排列。 简单的认证 SimpleAuth 内容 Contents 介绍 Introduction 安装 Installation 第1步:复制所需的文件 Step 1: Copy the required files 第2步:安装数据库 Step 2: Install the database 第3步:定义...
摘要:在服务器做出响应时,为了提高安全性,在响应头中可以使用的各种响应头字段。用于防止等跨站脚本攻击。用于防止跨站脚本攻击或数据注入攻击但是,如果设定不当,则网站中的部分脚本代码有可能失效。用于指定所有子域名同样使用该策略。 在 Web 服务器做出响应时,为了提高安全性,在 HTTP 响应头中可以使用的各种响应头字段。 X-Frame-Options 该响应头中用于控制是否在浏览器中显示 f...
摘要:一般至少要在执行路由前要判断用户是否具有权限一般在中,所以应该在它之前获得填充。以下代码可参考这里的方法就是重点。参考这里把对象保存在中。 showImg(https://segmentfault.com/img/bVkdih); 使用如下图解释这个组件: showImg(https://segmentfault.com/img/bVkdii); 实际最终真正要使用的是access_l...
摘要:前言对于前后端分离大家可能在网上可以找到很多的文章。但是,我们今天分享的文章的英文我们的老师对于前后端的分离问题的多年工作经验的总结。今天,我们把这些经验总结知识点分享给大家,希望可以帮助到大家。添加开启黑白名单,任选其一。 前言 对于前后端分离大家可能在网上可以找到很多的文章。但是,我们今天分享的文章的英文我们的老师对于前后端的分离问题的多年工作经验的总结。今天,我们把这些经验总结知...
阅读 2119·2021-11-15 11:39
阅读 3294·2021-10-09 09:41
阅读 1573·2019-08-30 14:20
阅读 3382·2019-08-30 13:53
阅读 3462·2019-08-29 16:32
阅读 3551·2019-08-29 11:20
阅读 3104·2019-08-26 13:53
阅读 844·2019-08-26 12:18