使用express.js''session'未定义'

时间:2012-11-08 17:30:53

标签: node.js session express

我在我的快递应用程序中使用 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

我尝试在 app.configure 之前添加 accessChecker 功能 并在 acessChecker中使用 express.cookieParser() express.session() 功能,但总是得到相同的消息!

1 个答案:

答案 0 :(得分:4)

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

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

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