Laravel 5.1 ACL权限控制 二 之策略类

it2022-05-05  86

  随着应用逻辑越来越复杂,要处理的权限越来越多,将所有权限定义在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

 实现的效果和上篇中的是否具有 "编辑文章" 的结果是一样的

 

转载于:https://www.cnblogs.com/Caoxt/p/5009418.html


最新回复(0)