2

我正在使用 express.js 和 passport.js 在节点服务器上工作。我处于一种情况,我不想使用express.bodyParser()beforeapp.use(passport.initialize())app.use(passport.session()). 如果我app.use(express.bodyParser())在两个护照中间件功能之后执行,它们会弄乱 req-stream 并且 bodyParser 不再工作。

我只想在一些特定的路线中使用 bodyParser,而不是在整个应用程序中。我为规避此错误所做的工作如下(在我想要保护和使用 bodyParser 的每条路线中):

app.post(route, express.json(), passport.initialize(), passport.session(), isAuthenticated, controller);

但我觉得这有点恶心。有没有办法让它保持干燥?

4

1 回答 1

2

auth.js

var passport = require('passport');
var express = require('express');
function isAuthenticated(req, res, next) {
  //...
}
module.exports = [
  express.json(),
  passport.initialize(),
  passport.session(),
  isAuthenticated
];

somerouter.js

app.post(route, require('./auth'), controller);
于 2013-10-31T13:48:51.987 回答