• 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';
            });
        }
    }
    

      

  • 相关阅读:
    C++数组释放问题
    C# 线程与进程
    Inspector面板Debug模式
    Unity实现汉诺塔游戏
    Unity中的销毁方法
    如何修改Unity中脚本模板
    序列帧动画
    Unity中的射线和射线图层过滤使用方法
    简单第一人称射击游戏
    C# 集合和泛型
  • 原文地址:https://www.cnblogs.com/bing2017/p/10888354.html
Copyright © 2020-2023  润新知