You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9中如何获取认证用户ID?及Postman测试Sanctum的Bearer Token方法

Laravel 9 + Sanctum 获取Bearer Token及登录用户ID指南

一、获取Bearer Token

1. 基础配置确认

确保已完成Sanctum核心配置:

  • 执行过迁移命令:php artisan migrate
  • 在config/auth.php中,将API guard的driver设置为sanctum:
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'sanctum',
        'provider' => 'users',
    ],
],

2. 创建登录API路由

在routes/api.php中添加登录接口路由:

use App\Http\Controllers\AuthController;

Route::post('/login', [AuthController::class, 'login']);

3. 编写登录控制器逻辑

创建AuthController并实现登录方法,生成Bearer Token:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class AuthController extends Controller
{
    public function login(Request $request)
    {
        // 验证登录参数
        $request->validate([
            'email' => 'required|email',
            'password' => 'required',
        ]);

        // 校验用户凭证
        if (!Auth::attempt($request->only('email', 'password'))) {
            return response()->json(['message' => '登录凭证无效'], 401);
        }

        // 生成并返回Bearer Token
        $user = Auth::user();
        $token = $user->createToken('auth_token')->plainTextToken;

        return response()->json([
            'access_token' => $token,
            'token_type' => 'Bearer',
            'user_id' => $user->id // 可选:直接返回用户ID
        ]);
    }
}

4. Postman测试获取Token

  • 新建POST请求,URL填写http://你的域名/api/login
  • 在Body选项卡选择form-data或raw(JSON),传入email和password参数
  • 发送请求后,响应结果中的access_token即为所需的Bearer Token

二、获取登录用户ID并调取关联数据

1. 保护需认证的API路由

在routes/api.php中,用auth:sanctum中间件保护需要用户身份的接口:

use App\Http\Controllers\UserDataController;

Route::middleware('auth:sanctum')->get('/user/data', [UserDataController::class, 'getAssociatedData']);

2. 在控制器中获取用户ID

在UserDataController中,通过Auth门面获取登录用户信息:

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Auth;

class UserDataController extends Controller
{
    public function getAssociatedData()
    {
        // 获取登录用户ID
        $userId = Auth::id();

        // 调取与该ID关联的数据(示例:查询用户关联的订单)
        $associatedData = \App\Models\Order::where('user_id', $userId)->get();

        return response()->json([
            'user_id' => $userId,
            'associated_data' => $associatedData
        ]);
    }
}

3. Postman带Token请求测试

  • 新建GET请求,URL填写http://你的域名/api/user/data
  • 在Headers选项卡添加键值对:
    • 键:Authorization
    • 值:Bearer 你的access_token(注意Bearer与Token之间有空格)
  • 发送请求,即可获取登录用户ID及对应关联数据

内容的提问来源于stack exchange,提问作者Sandesh Prabhu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 17:16:03