关于用户授权的使用
用户授权 是对 已经登录的用户操作权限 进行验证 , 而 中间件进行的是用户是否登录 ,二者不同
创建授权文件
1 | php artisan make:policy UserPolicy |
所有生成的授权策略文件都会被放置在 app/Policies 文件夹下。
添加授权方法
1 | class UserPolicy |
update 方法接收两个参数,第一个参数默认为当前登录用户实例,第二个参数则为要进行授权的用户实例。当两个 id 相同时,则代表两个用户是相同用户,
用户通过授权,可以接着进行下一个操作。如果 id 不相同的话,将抛出 403 异常信息来拒绝访问。
指定授权
在AuthServiceProvider类中对授权策略进行设置,即在 $policies 属性中1
2
3
4protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
\App\Models\User::class => \App\Policies\UserPolicy::class,
];
通过用户模型
在 User模型类中 使用授权动作 can 和 cant1
2
3if ($user->can('update', $post)) {
//
}
通过控制器辅助函数
在Controller类中 包含了 AuthorizesRequests trait ,而 AuthorizesRequests 中 提供了authorize 方法 ,它被用于快速授权一个指定的行为
1 | class PostController extends Controller |