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
相关产品推荐
相关产品推荐

