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 協議》,轉載必須註明作者和本文連結