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

如何在访问控制器前通过Axios注入请求头携带Bearer Token

核心结论

不存在通过Axios给浏览器直接点击链接发起的导航请求注入请求头的可行方案。
用户点击邮箱内链接的行为是浏览器原生页面跳转,请求由浏览器直接发起,不会执行你编写的前端JS代码,你写的Axios配置对这类请求完全不生效。

可行实现方案

方案1:使用现有签名路由完成校验(最适配现有代码)

你当前路由已经挂载了signed签名校验中间件,本身已经具备防篡改、身份合法性校验能力,不需要额外携带Bearer Token:

  • 生成验证邮件链接时直接调用Laravel内置的签名URL生成方法,将用户标识、校验哈希作为URL参数附加,签名的校验逻辑安全性和Bearer Token校验一致
  • 这也是Laravel框架默认邮箱验证功能的标准实现,不需要额外修改前后端逻辑

方案2:强制校验Bearer Token场景的实现方式

如果业务规则要求必须通过请求头携带Bearer Token访问验证接口,不要直接把接口地址放在验证邮件里,通过中间页转发实现:

  • 邮件内的链接指向你部署的前端中间跳转页,可将临时校验Token作为query参数附在跳转页链接上
  • 用户点击链接进入跳转页后,页面加载时通过Axios发起/verify-email接口请求,这时候请求由JS触发,可以正常携带你配置的Authorization请求头
  • 接口返回校验结果后,前端页面对用户展示验证成功/失败的提示即可
现有代码的问题
  1. Axios配置写法错误:axios.create()会返回独立的Axios实例,你没有接收返回值,配置不会生效;且baseURL是请求公共前缀,不能写为具体接口路径;Bearer Token的标准请求头字段为Authorization,格式为Bearer <token内容>,修正后的写法参考:
import axios from 'axios'

// 接收创建的实例
const verifyRequest = axios.create({
  baseURL: '/',
  headers: {
    'Authorization': 'Bearer foobar515615612655'
  }
});

// 发起请求时调用实例方法
// verifyRequest.get('/verify-email')
  1. 你定义的路由路径是/verify-email,但业务说明里提到邮件链接路径是/verify,路径不匹配会直接返回404,需要统一路径配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:24:20