【问题标题】:Current user's ID in Laravel APILaravel API 中当前用户的 ID
【发布时间】:2018-11-09 05:07:14
【问题描述】:

我有控制器方法存储并为该方法定义了 api 路由。当我尝试从 $request 存储信息时,一切正常,但当前用户 ID。 Auth::user() 返回空值。如何获取该 ID?

【问题讨论】:

标签: php laravel api


【解决方案1】:

根据@Rahul Reghunath 在How to get current user in Laravel API using Passport? 中的回答

您可以尝试使用此方法访问 api 中间件中的用户 id:

auth('api')->user();

一个例子:

Route::get("me",function (){
    $userInfo=auth('api')->user();
    if ($userInfo!==null)
    {
        return "User is logged in. id:".$userInfo->id;
    }else{
        return "User is not logged in.";
    }
});

对我来说,它在使用不记名令牌进行身份验证时显示了 id:

User is logged in. id:6

【讨论】:

    【解决方案2】:

    首先,您需要确保“api 用户”已登录以获取 ID。您可以使用 auth()->user()->idAuth::user()->id 来获取当前用户 ID。

    【讨论】:

      【解决方案3】:

      如果您尝试通过自定义身份验证(不是 laravel 提供的默认身份验证),那么您所有需要身份验证的路由都应该使用 web 中间件。

      Route::group(['middleware' => 'web'], function () {
          // your routes
      });
      

      然后您可以使用任一方法获取 Active 用户 ID

      Auth::user()->id
      

      auth()->user()->id
      

      【讨论】:

      • 我正在尝试访问 auth:api 中间件中的当前用户
      【解决方案4】:

      Laravel 默认使用 laravel 助手或 laravel 静态方法为当前用户提供。示例: 默认=>

       \Auth::user();
      

      如果你为此使用了任何防护,那么就使用

       \Auth::guard('guard_name')->user();
      

      如果你使用过 api 那么你可以通过

      auth('api')->user() //it's a laravel helper
      

      这个是api路由,上面两个是web路由

      【讨论】:

        猜你喜欢
        • 2019-12-28
        • 2021-06-08
        • 1970-01-01
        • 1970-01-01
        • 2016-12-11
        • 2019-07-20
        • 1970-01-01
        • 2014-12-07
        • 2018-01-13
        相关资源
        最近更新 更多