1

我在我的快递应用程序中使用express.session()所以我创建了一个中间件用于身份验证用户,然后再将它们发送到“/”我的代码是:

var express = require('express');

app.configure(function(){
  app.use(express.cookieParser('keyboard cat'));
  app.use(express.session( {secret : "my secret"}));
  app.use(app.router);
});

var accessChecker= function(req,res,next){
    if (req.session.user.name && req.session.auth){
    next(); 
    }else{
    res.redirect('/login');
    }
   }
app.get('/',accessChecker(), routes.index);

当我运行此代码时,我收到此消息:

if (req.session.user.name && req.session.auth){
       ^
TypeError: Cannot read property 'session' of undefined

我尝试将accessChecker函数 放在app.configure之前,并在accessChecker函数 中使用express.cookieParser()express.session()但总是得到相同的消息!

4

1 回答 1

4

您正在调用该accessChecker函数,而不是传递一个指向该函数的指针。这将解决问题:

app.get('/', accessChecker, routes.index);

有关更多示例,请参阅文档。如果您想进行身份验证,我还建议您查看护照。

于 2012-11-08T17:52:01.290 回答