laravel authorize(授权)
生活随笔
收集整理的這篇文章主要介紹了
laravel authorize(授权)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.方法一? 直接在AuthServiceProvider 中定義閉包,比較靈活
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;} }使用方法同上。
轉載于:https://www.cnblogs.com/fenle/p/4851149.html
總結
以上是生活随笔為你收集整理的laravel authorize(授权)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jenkins TFS配置
- 下一篇: ajax遇到的问题