试图在 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()...
.
当我想从用户 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()...
.