Laravel中auth('api')-> user()的异常行为

问题描述 投票:0回答:1

所以我遇到了一个看起来很奇怪的问题。我一直在使用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;
    }

我一生无法理解为什么第二版可以正常工作而第一版不能正常工作。我只是偶然发现它在尝试调试代码时起作用。任何人都可以尝试解释!

php laravel
1个回答
0
投票

您需要使用Auth::check()检查用户是否登录。因此您的代码将如下所示:

if (Auth::check()) {
   $user = Auth::user();
}
© www.soinside.com 2019 - 2024. All rights reserved.