Passportjs - req.logout函数不存在

时间:2013-10-23 03:39:04

标签: node.js express connect passport.js

我的路线看起来像这样:

  exports.logout = function(res, req){
      req.logout() // I blow up
      res.redirect('/')
    }
  

错误:对象#ServerResponse没有方法'logout'

调用此路由时,Request对象不包含注销函数。我认为这是因为我的中间件顺序错误。那是对的吗?这就是我的配置:

app.use(express.methodOverride());
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.cookieParser('meow'));
app.use(express.bodyParser());
app.use(express.session());
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(express.logger('dev'));
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');

这些护照中间件警告是否记录在任何地方?项目自述文件提供了一个示例,我将这些中间件包含在该顺序中但我怀疑另一个中间件集或使用正在打破我。任何人都可以为我阐明这一点吗?

2 个答案:

答案 0 :(得分:3)

您不小心切换了resreq形式参数。应该是:

exports.logout = function(req, res){
  req.logout();
  res.redirect('/');
}

答案 1 :(得分:0)

看起来你切换了req和res。

Error: Object #ServerResponse has no method 'logout'

ServerResponse不是req。