Laravel的用户授权policy

一、定义策略类
场景:文章的修改和删除操作

php artisan make:policy ArticlePolicy

二、编写策略类

<?php

namespace App\Policies;

use App\Http\Model\Article;
use App\User;
use Illuminate\Auth\Access\HandlesAuthorization;

class ArticlePolicy
{
    use HandlesAuthorization;

    /**
     * Create a new policy instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    //修改
    public function update(User $user, Article $article){
        return $user->id === $article->user_id;
    }
    //删除
    public function delete(User $user, Article $article){
        return $user->id === $article->user_id;
    }
}

三、注册策略类和模型关联
AuthServiceProvider中增加

protected $policies = [
//        'App\Model' => 'App\Policies\ModelPolicy',
        'App\Http\Model\Article' => 'App\Policies\ArticlePolicy',
    ];

四、策略判断
控制器中判断:

public function update(Article $article){
        $this->authorize('update',$article);
}
public function destroy(Article $article){
        $this->authorize('delete',$article);
}

模板中判断权限:

@can('update', $article)
            .....
 @endcan

@can('delete', $article)
            .....
 @endcan
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,280评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,676评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,874评论 18 399
  • 他看着我 吞吞吐吐想说不说 带着歉意地看着我 我也看着他 或者说 我也不太想看着他 但实在不知道干点什么才好 大家...
    马刺爱波波阅读 208评论 0 0
  • 纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注。 首先,安装PostgreSQL客户端。...
    尘世不扰阅读 1,140评论 0 3