繁体   English   中英

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

[英]req.headers['authorization'] is undefined in 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"); });

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

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

请帮忙 !!

您是否使用 Postman 进行测试?

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

在此处输入图像描述

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM