Laravel 5.5中使用JWT Auth传递登录用户Token的问题
嘿,我太懂每次在Postman里手动粘贴JWT Token有多繁琐了!这里有几个实用的方案帮你摆脱重复操作,让API请求流程更顺畅:
1. 用Postman环境变量自动同步Token
这是最常用的方法,能让登录后的Token自动同步到所有需要认证的请求里:
- 首先,创建一个Postman环境(比如命名为
Laravel JWT API),在环境里添加一个空的变量jwt_token。 - 打开你的登录请求,切换到Tests标签页,粘贴下面的脚本:
// 解析登录响应的JSON数据 const jsonData = pm.response.json(); // 将Token存入环境变量 pm.environment.set("jwt_token", jsonData.token); // 可选:添加提示,确认Token已保存 pm.test("Token已成功存入环境变量", function () { pm.expect(jsonData.token).to.not.be.empty; }); - 发送登录请求后,你的
jwt_token变量就会自动填充上返回的Token值。 - 接下来,在所有需要认证的请求的Headers里添加:
Authorization: Bearer {{jwt_token}}
这样Postman会自动替换变量为实际的Token,不用每次手动复制。
2. 给整个Collection设置全局授权
如果你的API请求都在同一个Collection里,可以一次性配置授权规则:
- 打开你的Collection,切换到Auth标签页。
- 认证类型选择Bearer Token,在Token输入框里填入
{{jwt_token}}。 - 保存后,这个Collection下的所有请求都会自动带上
Authorization: Bearer {{jwt_token}}的请求头,不用逐个设置。
3. 确保Laravel端的JWT中间件配置正确
当然,也要确认后端的验证逻辑没问题,避免Token传递了但验证失败:
- 检查
config/auth.php里的API guard驱动是否设置为jwt:'guards' => [ 'api' => [ 'driver' => 'jwt', 'provider' => 'users', ], ], - 给需要认证的API路由加上
auth:api中间件:Route::group(['middleware' => 'auth:api'], function () { // 这里放需要登录才能访问的路由,比如用户信息、订单接口等 Route::get('/user/profile', 'UserController@profile'); });
4. 进阶:自动刷新过期Token(可选)
如果你的Token有过期时间,可以写个前置脚本,自动检测Token是否过期,过期时自动重新登录获取新Token:
- 打开你的Collection,切换到Pre-request Script标签页,粘贴下面的脚本:
// 获取当前环境中的Token let token = pm.environment.get("jwt_token"); // 判断Token是否存在且未过期 function isTokenExpired(token) { if (!token) return true; const payload = JSON.parse(atob(token.split('.')[1])); // 比较Token过期时间和当前时间(转成秒) return payload.exp < Date.now() / 1000; } if (isTokenExpired(token)) { // 自动调用登录接口获取新Token pm.sendRequest({ url: pm.environment.get("base_url") + "/api/login", // 替换成你的登录接口地址 method: "POST", header: { "Content-Type": "application/json" }, body: { mode: "raw", raw: JSON.stringify({ email: "your_user_email@example.com", // 替换成测试账号邮箱 password: "your_user_password" // 替换成测试账号密码 }) } }, function (err, res) { const jsonData = res.json(); pm.environment.set("jwt_token", jsonData.token); // 更新当前请求的Authorization头 pm.request.headers.add({key: "Authorization", value: `Bearer ${jsonData.token}`}); }); } - 记得在环境变量里添加
base_url(比如http://127.0.0.1:8000),这样脚本能正确找到登录接口。
这样配置后,你基本不用再手动管Token的事了,Postman会帮你搞定一切!
内容的提问来源于stack exchange,提问作者shahzad1122
相关产品推荐
相关产品推荐

