laravel 授权策略


第一步 创建policy政策

$ php artisan make:policy UserAddressPolicy

第二步 编辑策略文件

<?php

namespace App\Policies;

use App\Models\User;
use App\Models\UserAddress;
use Illuminate\Auth\Access\HandlesAuthorization;

class UserAddressPolicy
{
    use HandlesAuthorization;

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

    /**
     * @param User $user 当前登陆用户数据
     * @param UserAddress $address  当前编辑的地址user_id
     * @return bool
     */
    public function own(User $user, UserAddress $address)
    {
        return $address->user_id == $user->id;
    }
}

第三步 第一种方法 对授权策略进行注册5.8以上laravel 以上新写法--自动授权注册

打开文件app\Providers\AuthServiceProvider.php

namespace App\Providers;
.
.
.
class AuthServiceProvider extends ServiceProvider
{
.
.
.
    public function boot()
    {
        $this->registerPolicies();
        // 修改策略自动发现的逻辑
        Gate::guessPolicyNamesUsing(function ($modelClass) {
            // 动态返回模型对应的策略名称,如:// 'App\Model\User' => 'App\Policies\UserPolicy',
            return 'App\Policies\\'.class_basename($modelClass).'Policy';
        });
    }
}

第三步 第二种方法 对授权策略进行注册 使用第一种写法可以忽略

打开文件app\Providers\AuthServiceProvider.php

use App\Models\UserAddress;
use App\Policies\UserAddressPolicy;
.
.
.
protected $policies = [
    'App\Model' => 'App\Policies\ModelPolicy',
    UserAddress::class => UserAddressPolicy::class,
];
.
.
.

第四部  书写到控制器中相应的方法

 public function edit(User $user)
 {
 $this->authorize('own', $user);       #自己体会吧
 return view('users.edit', compact('user'));
 }
来源: 原创
标签: laravel 授权策略

作者介绍

Image Description

zfajax舫

小时候的梦想是当宇航员,长大的梦想是在北京买套90㎡房的小站长、自媒体人,2014年毕业,后从事过网站开发搭建工作;2016年,创建了张舫博客;20015-至今在北京工作(微信:a7983310)

评论列表

还没有人评论,抢占前排沙发

发表评论

关于作者

Image Description

zfajax舫

小时候的梦想是当宇航员,长大的梦想是在北京买套90㎡房的小站长、自媒体人,2014年毕业,后从事过网站开发搭建工作;2016年,创建了张舫博客;20015-至今在北京工作(微信:a7983310)

关注作者

Social Links

定制项目外包

Unit 25 Suite 3, 925 Prospect PI,
Beach Resort, 23001

手机号码

18600004319