标签:
随着应用逻辑越来越复杂,要处理的权限越来越多,将所有权限定义在AuthServiceProvider
显然不是一个明智的做法,因此Laravel引入了策略类,策略类是一些原生的PHP类,和控制器基于资源对路由进行分组类似,策略类基于资源对权限进行分组管理。
1、生成策略类
php artisan make:policy PostPolicy
2、在AuthServiceProvider的policies属性中注册策略类:
‘App\Post‘ => ‘App\Policies\PostPolicy‘,
3、在app/Policies/PostPolicy.php添加策略
public function update(User $user, Post $post){ return $user->owns($post); }
----------------------------------以下为使用方法 -------------------------
4、修改AuthServiceProvider中的boot方法为
public function boot(GateContract $gate) { $this->registerPolicies($gate); }
5、PostController.php中的show方法和上篇文章中的相同,不作改变
6、修改show.blade.php视图中的接收参数
标题:{{ $post->title }} <br> 内容:{{ $post->body }} @can(‘update‘, $post) <a href="#">编辑文章</a> @endcan
实现的效果和上篇中的是否具有 "编辑文章" 的结果是一样的
标签:
原文地址:http://www.cnblogs.com/Caoxt/p/5009418.html