简体   繁体   English

将中间件应用于GET路由时req.body为空

[英]req.body is empty when apply middleware to a GET route

I write a router for authentication and a middleware to parse redirect parameter and save in session. 我写了一个用于身份验证的路由器和一个中间件来解析重定向参数并保存在会话中。 But when parsing query parameters, both req.body and req.params are empty. 但是,当解析查询参数时,req.body和req.params均为空。

router.js router.js

/* Route for Facebook login. This is the only login option for now. */

var router = require('express').Router();
var passport = require('passport');
var redirect = require('../middlewares/redirect');

/**
 * facebook oauth
 */
router.get('/facebook', redirect.parse(), passport.authenticate('facebook'));

redirect.js redirect.js

/**
 * save the redirect parameter to session
 *
 * @param {Object} options options for the middleware
 */
module.exports.parse = function (options) {
  return function (req, res, next) {
    console.log(req.body);
    console.log(req.params);
    if (req.body.redirect) {
      req.session.redirect = req.body.redirect;
      console.log(req.body.redirect);
      console.log(req.session.redirect);
      req.session.save();
    }
    next();
  };
};

When I call /auth/facebook?redirect=/groups , the output is: 当我致电/auth/facebook?redirect=/groups ,输出为:

{}
{}

The code is on Github https://github.com/guoyunhe/shrgrp 该代码在Github上https://github.com/guoyunhe/shrgrp

You are calling GET and expecting data from req.body which is not gonna work 您正在呼叫GET并期望来自req.body数据无法正常工作

With GET call you can get data in two ways: 通过GET调用,您可以通过两种方式获取数据:

if it is parameter then you can get in req.params 如果它是parameter则可以进入req.params

If it is query string then you can get in req.query 如果它是query string则可以进入req.query

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

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