gpt4 book ai didi

node.js - 使用 NodeJS 和 Express 4.x 的 session (req.session undefined)

转载 作者:搜寻专家 更新时间:2023-11-01 00:14:41 25 4
gpt4 key购买 nike

首先抱歉我的英语不好。我正在学习,正在做一个学术项目,遇到了一个问题。我不记得 session 变量。

包.json

  "dependencies": {
"body-parser": "^1.7.0",
"ejs": "~1.0.0",
"express": "^4.8.7",
"express-session": "^1.11.3",
"ini": "^1.3.4",
"mysql": "^2.8.0",
"winston": "^1.0.1"
}

服务器.js

var express = require('express');
var session = require('express-session');
var app = express();
...
require('./router/main')(app, language, connection, logger);

app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);
app.use(express.static(__dirname + '/public'));
app.use(session({
secret: 'pecuniamsekretsession',
resave: false,
saveUninitialized: true,
cookie: { secure: true }
}));

主要.js

module.exports = function(app, languageItems, connection, logger) {
app.post('/', require('../router/login.js')(languageItems, connection, logger));
app.get('/', require('../router/login.js')(languageItems, connection, logger));
}

登录.js

module.exports = function (language, connection, logger) {

var routerTemplateLogin = function (req, res) {
var utils = require('../utils/utils');
var util = new utils.Util;

// It does not work :-(
logger.debug(req.session);

req.on('data', function(data) {
var arrayPost = util.postDataToArray(data);
});

res.render('pages/login.ejs', {
lang: language
});
}

return routerTemplateLogin;
}

在 login.js 中查看 //它不起作用 :-(。完整项目在 https://github.com/braulioti/pecuniam

谢谢

最佳答案

问题在于路由是在任何其他中间件之前设置的。移动这一行:

require('./router/main')(app, language, connection, logger);

在此之后:

app.use(session({
secret: 'pecuniamsekretsession',
resave: false,
saveUninitialized: true,
cookie: { secure: true }
}));

在您的 server.js 中。

关于node.js - 使用 NodeJS 和 Express 4.x 的 session (req.session undefined),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31611920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com