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

如何在Laravel中以编程方式刷新个人访问令牌(无需HTTP请求)

无需HTTP请求刷新Laravel个人访问令牌的实现方案

嘿,这个场景我处理过不少,其实不用走oauth/token/refresh接口,直接在后端代码里操作用户的令牌模型就能搞定,核心思路是生成新的个人访问令牌并撤销旧令牌——毕竟个人访问令牌本身不像密码授权模式那样自带刷新令牌机制,咱们直接在代码层面完成替换就行。

具体步骤和代码示例如下:

  • 第一步:定位到需要刷新的旧令牌
    你可以通过用户的tokens关联关系,根据令牌名称、ID或者其他标识找到目标令牌:

    // 假设当前用户实例是 $user,根据令牌名称查找
    $oldToken = $user->tokens()->where('name', 'My Personal Token')->first();
    
  • 第二步:撤销旧令牌(可选但推荐)
    为了保证安全性,建议在生成新令牌前作废旧令牌,避免旧令牌继续生效:

    if ($oldToken) {
        $oldToken->revoke();
        // 如果需要彻底删除,也可以调用 delete() 方法
        // $oldToken->delete();
    }
    
  • 第三步:生成新的个人访问令牌
    调用用户模型的createToken方法生成新令牌,还可以同步设置作用域、过期时间等属性,和你当初创建原令牌的配置保持一致即可:

    // 生成带过期时间(7天)和指定作用域的新令牌
    $newToken = $user->createToken(
        'My Personal Token', // 保持和旧令牌相同的名称
        ['read', 'write'],   // 同步原令牌的作用域
        now()->addDays(7)    // 设置过期时间(可选)
    )->plainTextToken;
    

这样你就得到了新的有效令牌,整个过程完全在后端代码内完成,不需要发起任何HTTP请求。

需要注意的点:

  • 如果你的令牌不需要过期时间,创建时可以省略第三个参数,默认生成长期有效的令牌;
  • 要确保操作时的用户实例是已认证的,或者你有合法的用户模型实例权限;
  • 如果需要保留旧令牌的其他自定义属性,记得在生成新令牌时同步设置(比如通过额外的with方法添加属性)。

内容的提问来源于stack exchange,提问作者Ali Farhoudi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:45:28