最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

req.headers['authorization'] 在 Nodejs JWT(JSON WEB TOKEN) 中未定义

IT培训 admin 13浏览 0评论

req.headers['authorization'] 在 Nodejs JWT(JSON WEB TOKEN) 中未定义

这是 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");
});
回答如下:

你用Postman做测试吗?

在邮递员的标题部分添加'授权'密钥,如图:

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

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

req.headers['authorization'] 在 Nodejs JWT(JSON WEB TOKEN) 中未定义

这是 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");
});
回答如下:

你用Postman做测试吗?

在邮递员的标题部分添加'授权'密钥,如图:

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

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

评论列表 (0)

  1. 暂无评论