【问题标题】:Spatie/laravel-permission. hasRole() on nullSpatie/laravel 权限。 hasRole() on null
【发布时间】:2021-12-20 06:08:03
【问题描述】:

添加了 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()

【问题讨论】:

  • 使用可选,因为Auth可以返回null。optional(Auth::user())->hasRole()

标签: php laravel permissions


【解决方案1】:

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

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

或者更简单:

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

【讨论】:

    猜你喜欢
    • 2017-03-11
    • 2020-07-02
    • 1970-01-01
    • 2019-12-20
    • 2019-09-19
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 2020-11-01
    相关资源
    最近更新 更多