TypeError:无法读取未定义的属性'_csrf'

时间:2013-07-11 14:34:05

标签: express

我收到了CSRF令牌错误..

TypeError: Cannot read property '_csrf' of undefined at Object.handle (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/middleware/csrf.js:45:28) at next (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/proto.js:190:15) at Object.session [as handle] (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/middleware/session.js:221:66) at next (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/proto.js:190:15) at Object.cookieParser [as handle] (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js:60:5) at next (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/proto.js:190:15) at Object.methodOverride [as handle] (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js:37:5) at next (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/proto.js:190:15) at Object.expressValidator [as handle] (/home/nodejs/sites/IcoderStuff/node_modules/express-validator/lib/express_validator.js:148:10) at next (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/proto.js:190:15)

包(packages.json)

"express": "3.0.3",
"less-middleware": "0.1.12",
"hbs": "2.3.0",
"express-validator": "0.4.1",
"mongoose" : "3.x",
"node-uuid" : "1.x",
"request" : "2.x",
"async" : "0.2.x",
"date-utils": "1.x",
"jade": "0.31.2",
"xml2js" : "0.2.7",
"MD5" : "1.0.3",
"csv" : "0.3.3",
"nodemailer" : "0.4.4"

Server.js

app.configure(function(){
  app.set('port', process.env.PORT || 8080);
  app.set('views', __dirname);
  app.set('view engine', 'html');
  app.engine('html', require('hbs').__express);
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(expressValidator);
  app.use(express.methodOverride());
  app.use(express.cookieParser());
  app.use(express.session({ secret: 'xkvnjiersape', store: store }));
  app.use(express.csrf());
  app.use(express.static(path.join(__dirname, 'public')));
  app.use(require('less-middleware')({ src: __dirname + '/public' }));  
  app.use(require('grunt-contrib-livereload/lib/utils').livereloadSnippet);
  app.use(app.router);
});

1 个答案:

答案 0 :(得分:8)

也许这会帮助别人,不确定这对我来说是否与OP相同。然而,重新启动计算机后,这个问题出现在我身上,经过长时间的尴尬,我发现这是因为Redis(我使用connect-redis作为会话存储)没有自动重启。

换句话说,当会话存储不可用时,似乎发生了TypeError: Cannot read property '_csrfSecret' of undefinedcsrf of undefined