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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,929评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,034评论 25 709
  • 1、简介 除了提供开箱即用的认证服务之外,Laravel 还提供了一个简单的方式来管理授权逻辑以便控制对资源的访问...
    Yaococo88阅读 6,062评论 0 0
  • [题记] 蓦 然 回 首 那 人 却 在 灯 火 阑 珊 处 ...... [壹] 他是朝廷唯一的一位异姓王爷,年...
    初雪Safely阅读 2,875评论 0 1
  • 文/小包总。 2017.10.30 前几天一直忙着开会,今天难得休息,但是早上还是五点五十起了,...
    首席成长官小包总阅读 3,959评论 1 4

友情链接更多精彩内容