【问题标题】:req.headers['authorization'] is undefined in Nodejs JWT(JSON WEB TOKEN)req.headers['authorization'] 在 Nodejs JWT(JSON WEB TOKEN)中未定义
【发布时间】:2020-08-19 14:19:01
【问题描述】:

JWT 的代码如下:

const express = require("express");
const jwt = require("jsonwebtoken");

const app = express();

app.use(express.json());

const user = [
  {
    name: "Rohan",
    id: 1,
  },
  {
    name: "Sophie",
    id: 2,
  },
  {
    name: "Charlie",
    id: 3,
  },
];
app.get("/", (req, res) => {
  res.send("Welcome to Homepage");
});
app.get("/id", verifyToken, (req, res) => {
  res.json(user.filter((id) => user.name === req.user.name));
});

function verifyToken(req, res, next) {
  const authHeader = req.headers['authorization'];
  const token = authHeader && authHeader.split(" ")[1];

  if (token == null) return res.sendStatus(401);

  jwt.verify(token, "secretKey", (err, user) => {
    if (err) return res.sendStatus(403);
    req.user = user;
    next();
  });
}
app.post("/login", (req, res) => {
  const username = req.body.username;
  const user = { name: username };
  jwt.sign(user, "secretKey", (err, token) => {
    res.json({ token: token });
  });
});
app.listen(4000, () => {
  console.log("Server is listening on port: 4000");
});

console.log(The req.headers['authorization']) 时 req.headers['authorization'] 返回 undefined

当请求以 Authorization: Bearer "token" 格式发送时,此 JWT 代码总是返回状态 401(未授权),

请帮忙!!

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    您使用 Postman 进行测试吗?

    在邮递员的标题部分添加“授权”键,如图:

    并且不需要'authHeader.split(" ")1;' ,请像这样更改您的代码:

    const token = req.headers["authorization"];
    //   const token = authHeader && authHeader.split(" ")[1];
    console.log(token)
    

    【讨论】:

    • 我一直在 Vs Code 中使用 REST CLIENT 扩展。邮递员确实给了我一个必需的输出,但它是 Vs Code 扩展中的一个问题
    • 这里也一样。我不得不修改 api 以使用 x-access-token 而不是 Authorization: Bearer token
    猜你喜欢
    • 2023-03-20
    • 2021-04-28
    • 1970-01-01
    • 2021-06-03
    • 2016-11-24
    • 2015-09-23
    • 2014-07-11
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多