laravel用户授权Policy

步骤

定义策略类
注册策略类和模型关联
策略判断

定义一个文章post的policy

/app/Policies下会生产PostPolicy.php文件

php artisan make:policy PostPolicy

定义文章的update 修改权限与delete删除权限

class PostPolicy
{
    use HandlesAuthorization;

    /**
     * Create a new policy instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }
    // 修改权限
    public function update(User $user,Post $post){
        return $user->id == $post->user_id;
    }
    // 删除权限
    public function delete(User $user,Post $post){
        return $user->id == $post->user_id;
    }
}

注册策略类

找到app/Providers/AuthServiceProvider.php,将Post模型注册到PostPolicy

protected $policies = [
        'App\Post' => 'App\Policies\PostPolicy',
    ];

策略判断

下面是3种判断的方法

普通使用

if($user->can('update',$post)){
  //
}
或
if($user->can('update', Post::class)){
  //
}

Blade模板里使用

@can('update',$post)
  
@elsecan('delete',$post)

@endcan

控制器使用

$this-authorize('update',$post);
或
$this->authorize('update', Post::class);

你可能感兴趣的:(laravel用户授权Policy)