美文网首页H片日记金鹏堡
laravel用户授权Policy

laravel用户授权Policy

作者: 沐青之枫 | 来源:发表于2017-11-13 10:12 被阅读19次

    步骤

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

    定义一个文章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

        本文链接:https://www.haomeiwen.com/subject/gipamxtx.html