Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Can';t从经过身份验证的POST请求中获取用户名_Node.js_Express_Authentication_Middleware - Fatal编程技术网

Node.js Can';t从经过身份验证的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");

我正在构建一个节点和Express API,从经过身份验证的post请求中获取用户名时遇到问题。我在身份验证中间件中设置了
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)=>{//