NodeJS Passportjs - req.logout函数不存在

zdwk9cvp  于 2023-05-28  发布在  Node.js
关注(0)|答案(2)|浏览(123)

我有一条路线,看起来像这样:

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');

这些passport中间件警告是否有文档记录?项目README给出了一个例子,我已经将这些中间件包括在该顺序中,但我怀疑另一个中间件集或使用正在打破我。有人能为我解释一下吗?

pengsaosao

pengsaosao1#

您不小心切换了resreq的形参。应为:

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

x8goxv8g2#

看起来你把请求和资源调换了。

Error: Object #ServerResponse has no method 'logout'

ServerResponse是res not req。

相关问题