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

JWT路由验证中间件Authorization bearer为undefined跳转登录页问题

问题定位步骤
  • 首先检查登录接口逻辑:你当前的/login接口仅在服务端控制台打印生成的JWT,既没有将token返回给调用方,也没有做存储处理,前端/客户端后续发起请求时自然无法携带token,是导致Authorization头为undefined的最常见原因。
  • 检查请求发起逻辑:浏览器默认的页面跳转、form表单提交行为不会主动在请求头中添加Authorization字段,只有你手动配置的AJAX/fetch/axios等异步请求,才可以自定义请求头携带token。
  • 接口测试场景校验:如果你用Postman、Apifox等工具测试,确认你已经在请求配置的Authorization模块选择Bearer Token类型,并填入了登录接口生成的有效token。
  • 增加调试日志:在verifyToken函数首行打印console.log(req.headers),确认请求全头信息,排查是否头名称拼写错误、或者token放在了其他自定义头字段中。
解决方案

根据你的业务场景选择对应实现方案:

方案1:前后端分离(接口供前端异步调用)

第一步:修改登录接口,将生成的token返回给前端

app.post("/login", (req, res) => {
  const password = req.body.password
  const user = { name: password }
  jwt.sign({ user }, "secretkey", (err, token) => {
      if(err) return res.sendStatus(500)
      // 返回token给前端
      res.json({ code: 200, token })
  });
});

第二步:前端拿到token后存储在localStorage/sessionStorage中,后续所有请求手动添加Authorization头

// 前端请求示例
const token = localStorage.getItem('login_token')
fetch('/your-api', {
  headers: {
    'Authorization': `Bearer ${token}`
  }
})

方案2:服务端渲染(登录后直接跳转页面)

这种场景使用请求头携带token的逻辑不符合浏览器原生行为,改为cookie存储token更合理:
第一步:先安装cookie解析中间件

npm install cookie-parser

第二步:在项目入口注册中间件

const cookieParser = require('cookie-parser')
app.use(cookieParser())

第三步:修改登录接口,登录成功后将token写入cookie

app.post("/login", (req, res) => {
  const password = req.body.password
  const user = { name: password }
  jwt.sign({ user }, "secretkey", (err, token) => {
      if(err) return res.sendStatus(500)
      // httpOnly配置防止前端JS读取token,降低XSS风险
      res.cookie('auth_token', token, { httpOnly: true, maxAge: 24 * 60 * 60 * 1000 })
      // 跳转首页
      res.redirect('/')
  });
});

第四步:修改verifyToken中间件,从cookie中读取token

function verifyToken(req, res, next) {
  const token = req.cookies.auth_token;
  if (typeof token !== "undefined") {
    req.token = token;
    next();
  } else {
    res.redirect("/login");
  }
}

额外注意:你当前首页路由的res.render方法中使用的result变量未定义,需要补充对应逻辑否则接口会抛出500错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:45:05