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

编程入门 行业动态 更新时间:2024-10-07 04:36:12

req.headers['authorization'] 在 Nodejs JWT(JSON WEB TOKEN) <a href=https://www.elefans.com/category/jswz/34/1770247.html style=中未定义"/>

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) 中未定义

本文发布于:2024-05-07 05:18:23,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:中未   定义   authorization   req   headers

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!