Laravel 权限 Policy 学习

tips: 昨天在教程看到有人总结 队列
Summer: 总结是个不错的习惯,不过别发到『问题』分类下,可以发到自己的博客文章里。
我也总结一下,从 权限策略 开始。

正文 :
为了安全起见,我们只允许 XXX 的创建者 AAA 可以操作 (action) 对应的 XXX 信息,这个需求可以通过授权策略类(Policy)来实现。

第一步:

php artisan make:policy XXXPolicy

第二步:

app/Policies/XXXPolicy.php

<?php

namespace App\Policies;

use App\Models\XXX;
use App\Models\AAA;
use Illuminate\Auth\Access\HandlesAuthorization;

class XXXPolicy
{
    use HandlesAuthorization;

    public function {actionMethod}(AAA $aaa, XXX $xxx)
    {
        return $xxx->aaa_ss == $aaa->ss; // 目的:校验操作者与所有者是否相同。
    }
}

第三步:
注册这个策略
app/Providers/AuthServiceProvider.php

use App\Models\XXX;
use App\Policies\XXXPolicy;
.
.
.
    protected $policies = [
        ...
        XXX::class       => XXXPolicy::class,
                ...
    ];

最后在具体控制器中使用它:
appHttp/Controllers/XXX(s)Controller.php

...
public function show(XXX $xxx, ...)
{
     $this->authorize('{actionMethod}', $xxx);
     ...
}
...

1、出现问题,可以通过抛出异常处理,异常代码 403。
2、与中间件对比,中间件是公用的,像是洋葱的外壳一层一层的;权限是具体的,对具体的动作进行验证,更精细。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!