首页 > 解决方案 > Spatie/laravel 权限。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']);

但是当与我联系时,它给出了:Call to a member function hasRole() on null

标签: phplaravelpermissions

解决方案


要获得您的身份验证userAPI您需要引用api警卫:

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

或者更简单:

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

推荐阅读