前言
本文主要给大家介绍的是关于Laravel用户授权系统使用的相关内容
首先两个概念分清楚:
用户身份认证 Authentication - 处理用户登录, 退出, 注册, 找回密码, 重置密码, 用户邮箱认证 etc..
权限管理 Authorization - 负责 用户 与 权限, 用户组 三者之间的对应, 以及管理.
下面话不多说了,来一起看看详细的介绍吧
基本用法
示例
$this->authorize('update', $post);
第一个参数 $ability,表示具备什么权限。第二个参数 $post,是一个模型实例。
不需指定模型的动作,比如 create,不需要指定的模型。第二个参数传一个类名。如:
$this->authorize('create', Post::class);
使用的场景有:控制器辅助方法,中间件,Blade模板,User 模型的 can 和 can't 方法。
authorize方法:
public function authorize($ability, $arguments = []) { list($ability, $arguments) = $this->parseAbilityAndArguments($ability, $arguments); return app(Gate::class)->authorize($ability, $arguments); }
有两种方式实现用户授权
Gates
编写 Gates
一般在 app\Providers\AuthServiceProvider 的 boot 方法中定义。
Gate::define('update-post', function ($user, $post) { return $user->id == $post->user_id; });
第一个参数是权限的名称,第二个参数是满足权限的条件,可以是闭包,控制器方法。
授权动作
allows 和 denies 两种方法,表示允许和否定。
第一个参数是权限的名称,第二个参数是模型,可以为空。这里不需要传入用户,框架会自动处理。
if (Gate::allows('update-post', $post)) { // 指定用户可以更新博客... } if (Gate::denies('update-post', $post)) { // 指定用户不能更新博客... }
如果需要指定特定用户,可以使用 Gate Facade 中的 forUser 方法:
if (Gate::forUser($user)->allows('update-post', $post)) { // 指定用户可以更新博客... } if (Gate::forUser($user)->denies('update-post', $post)) { // 指定用户不能更新博客... }
策略
生成策略
artisan 命令:
php artisan make:policy PostPolicy
也可以指定 model,生成包含 CURD 的策略方法。
注册策略
在 AuthServiceProvider 的 policies 属性,可以将模型和策略对应起来。如:
protected $policies = [ Post::class => PostPolicy::class, ];
策略方法
public function update(User $user, Post $post) { return $user->id === $post->user_id; }
策略方法,就是权限名称,$this->authorize(‘update', $post)
的第一个参数就对应同名的策略方法,第二个参数 $post 代表它是一个 Post 模型,框架会根据参数判断采用 Post::class => PostPolicy::class
这个策略。
当 authorize 方法调用的时候,实际上会自动注入 User 和 Post 类型的两个参数,也因此使用授权系统必须是用户登录的情况下。
使用策略也不一定要和模型绑定,比如这样也可以:
protected $policies = [ Travel::class => TravelPolicy::class, 'aaa'=>TravelPolicy::class, ];
这个 aaa 字符串对应策略类为 TravelPolicy::class
,在控制器使用 authorize 判断授权:
$this->authorize('update','aaa');
此时也是可行的,第二个参数这个时候就必须是字符串 aaa 了,然后 authorize 方法只会自动注入 User 参数。
官方文档
Laravel 5.5 文档
https://laravel-china.org/docs/laravel/5.5/authorization/1310
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]