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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:16:47