Laravel 对成员函数hasAnyRole()的调用为null

Laravel 对成员函数hasAnyRole()的调用为null,laravel,middleware,Laravel,Middleware,我是拉威尔的新手。实际上,我的中间件有问题。我已经在Kernel.php文件中注册了它 public function handle($request, Closure $next){ $user = Auth::user(); if($user->hasAnyRole('school')) { return $next($request); } return redirect('login'); } 这是我的用

我是拉威尔的新手。实际上,我的中间件有问题。我已经在Kernel.php文件中注册了它

public function handle($request, Closure $next){

   $user = Auth::user();

    if($user->hasAnyRole('school'))
    {
         return $next($request);
    }
      

    return redirect('login');
}
这是我的用户模型

public function roles(){

        return $this->belongsToMany('App\Role');
    }

    public function hasAnyRoles(){

        return null !== $this->roles()->whereIn('name', $roles)->first();
    }

     public function hasAnyRole(){
     return null !== $this->roles()->where('name', $role)->first();
     }

尝试翻转逻辑并检查是否已登录。 执行
(Auth::check()


这意味着您的$user变量为null,对吗?您使用的是
spatie
?不,我没有使用SPATIETHAKS,我不再有那个错误。现在我看到这个页面不工作了。LocalHost重定向了您太多次。请尝试清除cookie。错误太多重定向。我在使用中间件时经常会收到。我清除了我的饼干坏了,但还是坏了。
public function handle($request, Closure $next){
  if (Auth::check()) {
     $user = Auth::user();
     if($user->hasAnyRole('school'))
     {
        return $next($request);
     }
  } else {
      return redirect('login'); 
  }
}