zoukankan      html  css  js  c++  java
  • Laravel策略(Policy)示例

    场景:当前用户创建的订单,只能当前用户自己看,可以通过授权策略类(Policy)来实现

    1.php artisan make:policy OrderPolicy

    成功后,默认只有一个构造方法.因为涉及到用户 ,订单,所以要注入用户与订单.只有当二者关联ID相等时才算通过.

    class OrderPolicy
    {
        use HandlesAuthorization;
    
        public function own(User $user, Order $order)
        {
            return $order->user_id == $user->id;
        }
    }
    

      

    2.在控制器中使用方法如下:

    $this->authorize('own', $order);
    

    3.由于5.8的版本可以配置自动加载,所以不需要再注册policy

    porviders/AuthServiceProvide.php

    class AuthServiceProvider extends ServiceProvider
    {
        /**
         * The policy mappings for the application.
         *
         * @var array
         */
        protected $policies = [
            // 'AppModel' => 'AppPoliciesModelPolicy',
        ];
    
        /**
         * Register any authentication / authorization services.
         *
         * @return void
         */
        public function boot()
        {
            $this->registerPolicies();
    
            Gate::guessPolicyNamesUsing(function($class){
                return '\App\Policies\'.class_basename($class).'Policy';
            });
        }
    }
    

      

  • 相关阅读:
    DOCTYPE
    js——类型转换
    对象Object
    Array数组
    es6学习笔记
    springboot第一个项目【mybatis】
    springboot第一个项目【创建】
    项目管理和流程的拙见
    树莓派 Zero作为飞控图传
    一根数据线玩转树莓派Zero
  • 原文地址:https://www.cnblogs.com/bing2017/p/10888354.html
Copyright © 2011-2022 走看看