TypeError:无法读取属性';csrfSecret';未定义在Object.handle的值-使用Node.js

TypeError:无法读取属性';csrfSecret';未定义在Object.handle的值-使用Node.js,node.js,session,express,csrf,passport.js,Node.js,Session,Express,Csrf,Passport.js,我正在制作一个简单的web应用程序,并尝试添加身份验证。在我尝试将身份验证页面与应用程序合并并收到以下错误消息之前,一切都正常(单独进行): TypeError:无法读取位于的未定义的属性“csrfSecret” handle(C:Project\node\u modules\express\node\u modules\connect\node\u modules\csurf\index.js:46:29) 下面是app.js中的代码,也许你们中的一位会看到问题的根源在哪里 var flash

我正在制作一个简单的web应用程序,并尝试添加身份验证。在我尝试将身份验证页面与应用程序合并并收到以下错误消息之前,一切都正常(单独进行):

TypeError:无法读取位于的未定义的属性“csrfSecret” handle(C:Project\node\u modules\express\node\u modules\connect\node\u modules\csurf\index.js:46:29)

下面是app.js中的代码,也许你们中的一位会看到问题的根源在哪里

var flash    = require('connect-flash');
var express  = require('express');
var app      = express();
app.use(function(req, res, next) {
  req.db = {};
  req.db.tasks = db.collection('tasks');
  next();
})
app.locals.appname = 'Name of App'
var port     = process.env.PORT || 8080;
var mongoose = require('mongoose');

var passport = require('passport');

var routes = require('./routes');
var tasks = require('./routes/tasks');
var http = require('http');
var path = require('path');
var mongoskin = require('mongoskin');
var db = mongoskin.db('connection works perfectly to my mongolab account', {safe:true});

var configDB = require('./config/database.js');


mongoose.connect(configDB.url); 

require('./config/passport')(passport); 

app.configure(function() {


    app.use(express.logger('dev')); 
    app.use(express.cookieParser());
    app.use(express.bodyParser()); 

    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');

    app.use(express.favicon());
    app.use(express.methodOverride());
    app.use(express.csrf());

    app.use(require('less-middleware')({ src: __dirname + '/public', compress: true }));
    app.use(express.static(path.join(__dirname, 'public')));
    app.use(function(req, res, next) {
        res.locals._csrf = req.session._csrf;  //THIS COULD BE THE SOURCE OF THE PROBLEM
        return next();
    })

    app.use(app.router);


    app.use(express.session({ secret: 'Bigsecretscretsecret' })); 
    app.use(passport.initialize());
    app.use(passport.session()); 
    app.use(flash()); 

});


require('./app/routes.js')(app, passport); 


app.listen(port);
console.log('Go to' + port);

使用Express.js 4.x,Connect中间件被分解为各个模块。请确保安装:

$npm安装--保存快速会话
&
$npm安装--保存cookie解析器

添加到你的app.js文件:

    var cookieParser = require('cookie-parser');
    var session = require('express-session');

    app.use(cookieParser())
    app.use(session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }})
查看文档