首页 > 解决方案 > Laravel:获取登录用户的ID

问题描述

我正在使用Laravel Passport来管理用户的身份验证。当用户登录时,在浏览器的本地存储中我有以下信息:

    {
        "user": {
            "id": 4,
            "name": "test",
            "email": "test@gmail.com",
            "email_verified_at": null,
            "created_at": "2021-05-08T06:57:27.000000Z",
            "updated_at": "2021-05-08T06:57:27.000000Z"
        },
        "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6Ijk2MjkxN2YyYzAwZjM5NmMwMTAzYzRjYTYwODk1YmYxMzY1MDE5OGQ1ZDQ5ZDJjNThlYzc0YmRkMzg2ZTk3MTE3MWE3ZWRjNjMyNjkwNjlhIn0.eyJhdWQiOiIxIiwianRpIjoiOTYyOTE3ZjJjMDBmMzk2YzAxMDNjNGNhNjA4OTViZjEzNjUwMTk4ZDVkNDlkMmM1OGVjNzRiZGQzODZlOTcxMTcxYTdlZGM2MzI2OTA2OWEiLCJpYXQiOjE2MjA0Njg0MjQsIm5iZiI6MTYyMDQ2ODQyNCwiZXhwIj"
}

我的web.php

use Illuminate\Support\Facades\Route;
use App\Models\Profile;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

Auth::routes();

Route::get('/customize/{id}', function ($id) {
   
    if (
        User::where('id', Auth::id())->whereHas('profile', function ($query) use ($id) {
            return $query->where('id', $id);
        })
        ->exists()
    )  {
        return true;
      }      
      return false;
});

如果我Auth::id()用硬编码值替换它,4它可以工作。

如何获取当前登录用户的 ID?

编辑:到目前为止我尝试了什么:

auth()->guard('api')->user()
Auth::id()
Auth::user()->id

标签: phplaravel

解决方案


我相信你可能只需要参考Auth::user()->id你现在拥有的地方Auth::id()

use Illuminate\Support\Facades\Route;
use App\Models\Profile;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

Auth::routes();

Route::get('/customize/{id}', function ($id) {
   
    if (
        User::where('id', Auth::user()->id)->whereHas('profile', function ($query) use ($id) {
            return $query->where('id', $id);
        })
        ->exists()
    )  {
        return true;
      }      
      return false;
});

推荐阅读