【问题标题】:Unexpected behaviour from auth('api')->user() in LaravelLaravel 中 auth('api')->user() 的意外行为
【发布时间】:2020-04-20 09:23:58
【问题描述】:

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

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

【问题讨论】:

  • 在这种情况下确保 $user 对象始终存在的唯一方法是在您的路由上使用auth:api

标签: php laravel


【解决方案1】:

您需要使用Auth::check() 来检查用户是否登录。 所以你的代码看起来像:

if (Auth::check()) {
   $user = Auth::user();
}

【讨论】:

    猜你喜欢
    • 2019-04-06
    • 2017-03-29
    • 2016-04-02
    • 2018-08-11
    • 2021-07-29
    • 2023-02-04
    • 1970-01-01
    • 2015-05-13
    • 2016-05-23
    相关资源
    最近更新 更多