Node.js Can';t从经过身份验证的POST请求中获取用户名
我正在构建一个节点和Express API,从经过身份验证的post请求中获取用户名时遇到问题。我在身份验证中间件中设置了Node.js Can';t从经过身份验证的POST请求中获取用户名,node.js,express,authentication,middleware,Node.js,Express,Authentication,Middleware,我正在构建一个节点和Express API,从经过身份验证的post请求中获取用户名时遇到问题。我在身份验证中间件中设置了locals.user.username,在发出POST请求时,我在请求中发送该密钥,但在对同一文档发出GET请求时,我在响应中没有看到该密钥。我正在设置的本地人是一个带有用户电子邮件、密码和用户名的对象,我在post请求中设置了这些内容。我不确定问题出在哪里 我的身份验证中间件: const jwt = require("jsonwebtoken");
locals.user.username
,在发出POST请求时,我在请求中发送该密钥,但在对同一文档发出GET请求时,我在响应中没有看到该密钥。我正在设置的本地人是一个带有用户电子邮件、密码和用户名的对象,我在post请求中设置了这些内容。我不确定问题出在哪里
我的身份验证中间件:
const jwt = require("jsonwebtoken");
require("dotenv").config();
const auth = async (req, res, next) => {
const token = req.headers["authorization"];
if (!token) {
return res.status(401).send("Access was denied");
} else {
const tokenBody = token && token.split(" ")[1];
jwt.verify(tokenBody, process.env.JWT_SECRET, async (err, decoded) => {
if (err) {
console.log(`JWT error: ${err}`);
return res.status(401).json({ Error: err.message });
} else {
let user = await User.findOne({ email: decoded.email });
res.locals.user = user; //set user object in locals
next();
return user
}
});
}
};
module.exports = auth;
该职位要求:
router.route("/post").post(auth, async (req, res) => {//<- username in middleware
try {
const newReview = new Review({
tagline: req.body.tagline,
bandName: req.body.bandName,
venue: req.body.venue,
showDate: req.body.showDate,
content: req.body.content,
rating: req.body.rating,
username: res.locals.user.username, //send username from locals in the request
});
await newReview.validate();
await newReview.save();
res.json({ message: "New review added"});
} catch (error) {
res.status(500).json(error);
}
});
router.route(“/post”).post(auth,async(req,res)=>{//