【发布时间】:2020-09-02 11:56:38
【问题描述】:
我刚刚开始学习如何将 cookie 与 node 和 express 一起使用,我希望得到一些帮助以使其正常工作。我尝试按照 GitHub 上的 expressjs/session 教程进行操作,但是我得到的 req.session 为 undefined,因此我无法设置或获取任何值。
我的目标是将用户的名字和姓氏保存到 cookie 中,以便自动填充输入字段。我不确定我是否也需要使用cookie-parser,或者express-session 是否可以单独处理。我不知道如何进行,因为我是 cookie 和 express-session 的新手。
感谢所有帮助!提前致谢。
代码
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;
【问题讨论】: