我正在使用 Laravel Policy 并检查使用 Spatie 的 Laravel-Permissions 包创建的权限。对于使用客户端凭据的 API 调用,Controller 构造函数中的 authorizeResource() 返回 403。如果将其删除,它将返回预期结果。
NpoPolicy.php
public function view(User $user, Npo $npo)
{
return $user->can('npo.view');
}
NpoController.php
public function __construct()
{
$this->authorizeResource(Npo::class);
}
api.php
Route::middleware('client')->resource('/npo', 'NpoController');
API 请求
URL:https
://my-app.dev/api/npo/1 方法:GET
当我在控制器构造函数中注释掉 authorizeResource 方法时,我得到了预期的结果:
{
"npos": {
"id":1,
"name":"Bailey and Sons",
"contact_person_name":"Mr. Davion Mayert",
"created_at":"2019-06-13 17:39:25",
"updated_at":"2019-06-13 17:39:25"
}
}
我知道 Laravel 策略需要一个用户模型对象,这就是为什么该策略在我的情况下返回 403 响应。在这些情况下,是否有处理 API 请求(使用客户端凭据)的一般做法?