Spatie/laravel-permission。 hasRole() 为空

Spatie/laravel-permission. hasRole() on null

已添加 spatie/laravel-permission,一切都通过 routes/api 中的中间件工作。php

Route::get('roles', [RoleController::class, 'rolesIndex'])->middleware('role:Admin');

我想为 api 进行角色检查并添加了一个函数:

   function check($roleName) {
     $user = Auth::user();
     if (!$user->hasRole($roleName)) {
       abort(403);
     }
     return response('', 202);
   }

添加到路由器 - 寻址路由:

Route::get('check/{roleName}', [RoleController::class, 'check']);

但是当联系我时,它给出:在 null 上调用成员函数 hasRole()

要获得您的 API 的经过身份验证的 user,您需要引用 api 守卫:

$user = auth('api')->user();
if (!$user->hasRole($roleName) {
    // ...
}

或更简单:

if (!auth('api')->user()->hasRole($roleName)) {
    // ...
}