所以我遇到了一个看起来很奇怪的问题。我一直在使用auth('api')-> user()在各种控制器使用的模型方法中获取用户集合。对于使用api中间件作为公共路线的API设置,其控制器使用此模型方法,并且代码仅偶尔起作用。
我将在下面粘贴两个版本的代码。
即使该用户登录,该版本有时也会为$ user返回null。
if(Auth::user()){
$user = Auth::user();
}elseif(auth('api')->user()){
$user = auth('api')->user();
}else{
$user = null;
}
第二版本的代码似乎总是在用户登录时返回$ user的用户集合。
$apiUser = auth('api')->user();
if(Auth::user()){
$user = Auth::user();
}elseif(auth('api')->user()){
$user = auth('api')->user();
}else{
$user = null;
}
我一生无法理解为什么第二版可以正常工作而第一版不能正常工作。我只是偶然发现它在尝试调试代码时起作用。任何人都可以尝试解释!
您需要使用Auth::check()
检查用户是否登录。因此您的代码将如下所示:
if (Auth::check()) {
$user = Auth::user();
}