【问题标题】:Auth user check role is not working in serviceProvider Laravel身份验证用户检查角色在 serviceProvider Laravel 中不起作用
【发布时间】:2021-02-25 03:24:28
【问题描述】:

当我在服务提供商中使用 (auth()->user()->hasRole('User')) 或 (Auth::user()->hasRole('User')) 时,它给了我这个错误:

Call to a member function hasRole() on null

我使用 spatie 库并将其包含在我的 serviceProvider 文件中:

use Illuminate\Support\Facades\Auth;

use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Traits\HasRoles;

而我写的代码是:

if (Auth::user()->hasRole('User')) {
    $count = Complaint::where('user_id', auth()->user()->id)->where('is_deleted', 'not_deleted')->get()->count();
} else {
    $count = Complaint::where('status', '!=', null)->where('is_deleted', 'not_deleted')->get()->count();
}

【问题讨论】:

    标签: laravel-8 roles service-provider laravel-permission


    【解决方案1】:

    不幸的是,Laravel 会话是在中间件中初始化的,因此您无法从服务提供者访问 Auth::...,因为它们是在请求生命周期中的中间件之前执行的。

    【讨论】:

      猜你喜欢
      • 2013-12-06
      • 2011-09-02
      • 2015-07-19
      • 2013-05-29
      • 2015-02-25
      • 2016-10-21
      • 2019-10-30
      • 1970-01-01
      相关资源
      最近更新 更多