laravel authorize(授权)
2015-10-01 16:15
567 查看
1.方法一 直接在AuthServiceProvider 中定义闭包,比较灵活
2.方法二 ,注册策略类来实现
建立policy
注册 模型 =>策略
定义类策略函数
使用方法同上。
namespace App\Providers; ... class AuthServiceProvider extends ServiceProvider { ... public function boot(GateContract $gate) { parent::registerPolicies($gate); //使用闭包定义授权能力 $gate->define('update-post', function($user, $post){ return $user->id == $post->user_id; }); //使用类函数定义 $gate->define('update-post', 'PostPolicy@update'); } }
namespace App\Http\Controllers; ... //在控制器中检验授权 class PostController extends Controller { public function show($id) { //auth()->logout(); auth()->loginUsingId(3); $post = Post::findOrFail($id); // if(Gate::denies('show-post', $post)){ // abort(403, 'sorry, not sorry!'); // } //$this->authorize('update-post', $post); return view('posts.show', compact('post')); } }
//在view中检验授权,如果通过才显示update链接 <h2>{{$post->title}}</h2> @can('update-post', $post) <a href=#>update</a> @endcan
2.方法二 ,注册策略类来实现
建立policy
php artisan make:policy PostPolicy
注册 模型 =>策略
namespace App\Providers; ... class AuthServiceProvider extends ServiceProvider { protected $policies = [ // 'App\Model' => 'App\Policies\ModelPolicy', \App\Post::class => \App\Policies\PostPolicy::class, ];
定义类策略函数
namespace App\Policies; use App\User; use App\Post; class PostPolicy { //可以建立多个检验方法对应不同场景 public function update(User $user, Post $post) { return $user->id == $post->user_id; } }
使用方法同上。
相关文章推荐
- import matplotlib出错
- ThinkPHP函数第一讲之刚接触
- 使用PHP生成二维码的两种方法(带logo图像)
- getParameter和getAttribute的区别是什么?
- zendstudio安装
- 开源协议和ThinkPHP框架
- PHP知识点-1
- php move_uploaded_file()函数
- php完整表单验证实例
- TextPad等编译器找不到或无法加载主类
- php中preg_match的isU代表什么意思
- php中的几个输出函数
- How to install Yii2 on ubuntu
- PHP输入文本中\n不起作用
- yii使用寻呼功能
- php+mysql非缓冲查询(如何循环大数组)
- 阿里云ECS上装WDCP后装Wordpress后台某些页打不开
- 帝国备份王放到空间以后打开index.php显示空白页,解决办法
- ThinkPHP神秘应用架构扩展
- PHP漏洞全解(五)-SQL注入攻击