试图在 laravel7 中获取 属性 'usergroup' 的非对象

Trying to get property 'usergroup' of non-object in laravel7

当我想从用户 table 获取数据时出现错误。我想根据用户组(管理员和用户)重定向到不同的 url。

我试图在中间件中设置条件但出现错误“正在尝试获取非对象的 属性 'usergroup'”

代码如下:

         <?php

                namespace App\Http\Middleware;
                use Illuminate\Support\Facades\Auth;
                use Closure;
                use App\User;

                class AdminAuth
                {
                      /**
                       * Handle an incoming request.
                       *
                       * @param  \Illuminate\Http\Request  $request
                       * @param  \Closure  $next
                       * @return mixed
                       */
                   public function handle($request, Closure $next)
                   {
                       if (!Auth::check() && auth()->user()->usergroup == 1) 
                       {
                           return redirect('admin/login');
                       }
                    elseif(!Auth::check() && auth()->user()->usergroup == 2) 
                    {
                         return redirect('user/login');
                     }
                     return $next($request);
            }
          }

您的条件不正确。你应该检查 Auth::check() 而不是用 ! 否定它。由于没有经过身份验证的用户 ! Auth::check() 正在返回 true,这导致对 && 和 AND 另一侧的语句进行评估。由于没有经过身份验证的用户,这会导致错误。

正确调整你的短路条件:

if (Auth::check() && auth()->user()->usergroup == 1) {
    ...
elseif (Auth::check() && auth()->user()->usergroup == 2) {
    ...
}

这样,如果 Auth::check() returns 一个 false 等效值,它将不会尝试评估语句 auth()->user()....