req.session是使用快速会话未定义的

我刚刚开始学习如何使用Cookie和快递,我希望得到这个工作的一些帮助。 我试图按照GitHub上的expressjs / session教程,但是我得到的req.session undefined ,所以我无法设置或获取任何值。

我的目标是将用户的名字和姓氏保存到cookie中,以便input字段将自动填充。 我不确定是否需要使用cookie-parser ,或者如果express-session可以单独处理。 我不确定如何继续,因为我是新的cookies和快速会话。

所有帮助表示赞赏! 提前致谢。

 let express = require('express'); let app = express(); let credentials = require('../modules/credentials.js'); let session = require('express-session'); let sessionOptions = { secret: credentials.cookieSecret, cookie: { maxAge:269999999999 }, saveUninitialized: true, resave:true }; if (app.get('env') === 'production') { app.set('trust proxy', 1); sessionOptions.cookie.secure = true; } else { sessionOptions.cookie.secure = false; } app.use(session(sessionOptions)); let router = express.Router(); app.use(router); let request = require('request'); let db = require('../modules/queries'); let bodyParser = require('body-parser'); let cookieParser = require('cookie-parser'); // app.use(cookieParser()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); router.get('/me', function(req, res, next) { console.log('req.session: '+req.session); let firstName = req.session.firstName; let lastName = req.session.lastName; if (firstName && lastName) { res.render('student/me.jade', {firstName, lastName}); } else { res.render('student/me.jade', { firstName: '', lastName: ''}); } }); router.post('/api/me', function(req, res, next) { let firstName = req.body.firstName; let lastName = req.body.lastName; // session.firstName = firstName; // session.lastName = lastName; req.session.firstName = firstName; req.session.lastName = lastName; console.log('session.firstName: '+session.firstName); db.addEvent(req, res, next); }); module.exports = router; 

将路由器安装到Express应用程序后,该应用程序中随后声明的任何中间件都不会被请求发送到路由器的任何请求。

所以如果你有这个:

 app.use(router) app.use(session(...)); 

会话中间件不会被router处理的任何请求调用(即使你声明路由器稍后要处理的路由)。 为此,您需要更改顺序:

 app.use(session(...)); app.use(router); 

另一个问题是你要导出router ,这应该是app (这是“拥有”所有中间件,路由器等的实例):

 module.exports = app; 

获取会话数据

首先,你必须初始化快速会话

 app.use(session({ resave: true ,secret: '123456' , saveUninitialized: true})); 

那么当你想把东西放在会话中

 req.session.firstName = 'Aniruddha'; req.session.lastName = 'Chakraborty'; 

那么你可以检查没有错误

 console.log('req.session: '+req.session.firstName); 

注意:这是快递会议的工作!