我在我的快递应用程序中使用 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() 功能,但总是得到相同的消息!
答案 0 :(得分:4)
您正在调用accessChecker
函数,而不是传递指向函数的指针。这将解决问题:
app.get('/', accessChecker, routes.index);
有关更多示例,请参阅documentation。如果您想进行身份验证,我还建议您查看passport。