【问题标题】:Node/Express — req.query.token // udefined going to localhost:3000/?token=foobarNode/Express — req.query.token // udefined 到 localhost:3000/?token=foobar
【发布时间】:2021-11-24 12:42:40
【问题描述】:

我正在尝试解析 Express 后端中的 URL,但是当我转到 localhost:3000/token=myJwtToken 之类的 URL 时,我在后端的 authJwt.verifyToken 中间件中得到 undefined for req.query.token。

在我的 React App.js 中,我正在访问以下端点,我需要在 URL 中验证一个令牌作为参数/查询字符串,其中包含发送方和接收方共享的秘密:

const req = {
  url: 'http://localhost:8080/api/verify',
  method: 'GET',
};

在我的后端我有这条路线:

module.exports = function (app) {
  app.get(
    '/api/verify',
    [authJwt.verifyToken], // verify token in URL middleware
    galleryController.loadGallery, // proceed to gallery
  );
};

我的 verifyToken 身份验证中间件是这样的:

verifyToken = (req, res, next) => {
  let token = req.query.token;
  console.log(token); // undefined
  console.log(req.params); // {}

  if (!token) {
    console.log('NO TOKEN!!!');
    return res.status(401).send({
      message: 'Unauthorized!',
    });
  }

  jwt.verify(token, process.env.JWT_SECRET, (err, decoded) => {
    if (err) {
      console.log(`Error: ${err}`);
      return res.status(401).send({
        message: `Error: ${err}`,
      });
    }
    console.log('success!', decoded.token);
    next();
  });
};

我哪里出错了?

【问题讨论】:

    标签: node.js reactjs express jwt


    【解决方案1】:

    localhost:3000/token=myJwtToken 是(无效)路径,不是查询参数

    localhost:3000/api/verify?token=myJwtToken 将返回一个带有 key token 和 value myJwtToken 的查询参数

    【讨论】:

    • 这很有意义...我需要将完整的 URL 从前端发送到后端。我知道这是一个愚蠢的问题,但我不能通过从前端点击“/”来解析后端的完整 URL(带有查询字符串/参数)......或者后端只能知道前端发送什么是吗?
    • 在我们学习的时候没有愚蠢的问题。以这种方式将数据传递到后端有三种方法 - 您可以使用路径参数,例如,如果您正在执行 GET /api//data - 您可以使用查询参数,例如 GET /api/ data?userid=1234&content=data -- 或者您可以使用请求的主体来传递更重要的数据,例如 POST /api/data 的主体为 { "userid": "1234", "content": "data" , "日期": "03/03/2020" }
    猜你喜欢
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2018-08-07
    • 2021-09-14
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多