【问题标题】:JWT-Node authentication - req.headers[''authorization"] is UndefinedJWT-Node 身份验证 - req.headers[''authorization"] 未定义
【发布时间】:2023-03-20 04:16:02
【问题描述】:

我尝试设置令牌然后从标头获取令牌,但是当我 console.log(req.headers['authorization']) 时它总是显示“未定义”

这是一些代码

const express = require('express');
const app = express();
const jwt = require('jsonwebtoken');
const accessTokenSecret = 'youraccesstokensecret';
app.listen(8080, () => {
    console.log('Authentication service started on port 8080');
});

我设置了令牌

app.get("/createJWT",function(req,res){
    const accessToken = jwt.sign({ username: "myName"}, accessTokenSecret);

    res.json({
        accessToken
    });
})

中间件(我显示 req.headers['authorization'] 未定义)

const authenticateJWT = (req, res, next) => {
    const authHeader = req.headers['authorization'];
    console.log(authHeader)
    if (authHeader) {
        const token = authHeader.split(' ')[1];

        jwt.verify(token, accessTokenSecret, (err, user) => {
            if (err) {
                return res.sendStatus(403);
            }

            req.user = user;
            next();
        });
    } else {
        res.sendStatus(401);
    }
};

最后,我访问一个路由进行测试,req.headers['authorization'] 没有值。

app.get("/check",authenticateJWT,function(req, res){
    res.send("ok")
})

请帮帮我,谢谢

【问题讨论】:

  • 找到解决方案了吗?

标签: node.js express jwt-auth


【解决方案1】:

因此,当您从前端调用 API 或说您正在使用 postman 检查 API 时,您是否在请求 /check 时设置了标头? (我不是在谈论您的 /createJWT 创建令牌并将其作为响应发送)

在您的前端代码/邮递员中,您需要在创建 HTTP 请求时显式添加标头 authorization JWTtoken,然后您的后端将接收它。请检查是否未完成。

【讨论】:

  • 以防万一,我想在我的应用程序中创建登录功能。我该怎么办?我只是认为,当令牌被签名时,它被直接分配给 req.headers ['authorization']。有什么方法可以存储它以请求??
  • @PhanVănThành 很抱歉这么晚才联系。你还在坚持吗?
猜你喜欢
  • 2020-08-19
  • 2020-08-23
  • 2017-08-16
  • 2023-01-22
  • 1970-01-01
  • 2019-11-20
  • 1970-01-01
  • 2020-06-26
  • 2019-02-07
相关资源
最近更新 更多