首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS表达式+ RedisStore,请求会话始终未定义

NodeJS表达式+ RedisStore,请求会话始终未定义
EN

Stack Overflow用户
提问于 2014-09-24 23:37:31
回答 1查看 386关注 0票数 0

我确实看到了一些类似的问题,但九个问题可以解决我的问题!

nodeJS Express应用程序中的req.session始终是未定义的。在express / connect-redis /和express-session包上使用最新版本。

代码语言:javascript
复制
var express = require('express') ;
var app = express() ;
var port = process.env.PORT || 8008  ;
var mongoose = require('mongoose') ;
var cookieParser = require('cookie-parser') ;
var bodyParser   = require('body-parser');
var session      = require('express-session') ;
var RedisStore = require('connect-redis')(session);
var Hash = require('password-hash') ;
var helmet = require('helmet') ;


app.use(express.static(__dirname + "/view" )) ;
app.use(cookieParser() );
app.use(bodyParser()) ;
app.use(session({
        saveUninitialized: true,
        resave: true ,
        store: new RedisStore({
            host: 'localhost',
            port: 7379,
            db: 2,
            pass: 'somePassworD'
        }),
        secret: 'someSecret' ,
        //cookie: { secure: true}
    })
);

app.use(helmet()) ;
app.use(function (req, res, next) {
    res.locals.csrftoken = req.session._csrf; 
    next();
}) ;

错误消息:

代码语言:javascript
复制
TypeError: Cannot read property '_csrf' of undefined
EN

回答 1

Stack Overflow用户

发布于 2014-09-24 23:51:18

当您使用https://www.npmjs.org/package/csurf中间件时,将出现CSRF令牌

代码语言:javascript
复制
var express = require('express') ;
var app = express() ;
var port = process.env.PORT || 8008  ;
var csrf    = require('csurf')
var mongoose = require('mongoose') ;
var cookieParser = require('cookie-parser') ;
var bodyParser   = require('body-parser');
var session      = require('express-session') ;
var RedisStore = require('connect-redis')(session);
var Hash = require('password-hash') ;
var helmet = require('helmet') ;


app.use(express.static(__dirname + "/view" )) ;
app.use(cookieParser() );
app.use(bodyParser()) ;
app.use(session({
        saveUninitialized: true,
        resave: true ,
        store: new RedisStore({
            host: 'localhost',
            port: 7379,
            db: 2,
            pass: 'somePassworD'
        }),
        secret: 'someSecret' ,
        //cookie: { secure: true}
    })
);

app.use(csrf()); 

app.use(helmet()) ;
app.use(function (req, res, next) {
    res.locals.csrftoken = req.session._csrf; 
    next();
}) ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26021012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档