【问题标题】:node.js express authorization 'JWT' can't read headernode.js 快速授权“JWT”无法读取标头
【发布时间】:2022-02-18 01:42:23
【问题描述】:

我有一个正在运行的带有 JWT 的登录系统。在客户端,我将令牌存储在 cookie 中。工作完全稳定。

现在,我正在尝试将令牌存储在没有 cookie 的标头中。我在这里阅读了很多条目,但我没有让它运行。

发布登录请求:

app.post('login', async (req, res) {
   // check user exists...
   // check password...
   // create token...

   // Sending token:
   res.header('Authorization', userToken);

   // redirect('myroute');
}

获取打开路由的请求:

app.get('myroute', async (req, res) {

   // try to get header 'Authorization':
   let userToken = req.headers.get('Authorization')   // --> authHeader is undefined

   // logging:
   console.log(req.headers);   // Complete header is logged without ('Authorization', 
                                  userToken) -> but I guess, that´s normal. 

}

我的错误在哪里?很高兴得到一些帮助

【问题讨论】:

  • 好吧,没有与存储/发送header相关的前端代码,我们也做不了什么..
  • 与 cookie 不同,标头不会自动从响应复制到后续请求。您需要前端代码来执行此复制操作。

标签: node.js express jwt


【解决方案1】:

我不完全明白你在问什么,所以我一般参考 Heiko Theißen 的评论 (node.js express authorization 'JWT' can't read header)。但是假设您向后端的“myroute”发送了正确的 GET 请求(必须在客户端完成),那么如果授权标头中正确提供了令牌,您确实可以从那里访问令牌。我怀疑您在尝试提取 Authorization 标头的内容时存在语法错误。据我所知,您不能像这样访问授权标头内容:

let userToken = req.headers.get('Authorization');

我知道在 JavaScript 中访问对象属性的方法是

let userToken = req.headers.authorization;

let userToken = req.headers["authorization"];

所以也许可以尝试在您的代码中访问它:

app.get('myroute', async (req, res) {

   // try to get header 'Authorization':
   let userToken = req.headers.authorization;   // --> should not be undefined if provided correctly by your client

   // logging:
   console.log(req.headers);
}

【讨论】:

    猜你喜欢
    • 2021-12-10
    • 2020-11-23
    • 2020-01-09
    • 2016-01-22
    • 2020-07-26
    • 2015-11-05
    • 1970-01-01
    • 2019-09-23
    • 2016-07-15
    相关资源
    最近更新 更多