使用NodeJS和Express 4.x的会话(请求会话未定义) [英] Session using NodeJS and Express 4.x (req.session undefined)

查看:102
本文介绍了使用NodeJS和Express 4.x的会话(请求会话未定义)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

首先,对不起我的英语不好.我正在学习,正在做一个学术项目,遇到了一个问题.我想不起会话变量.

First of all sorry my bad English. I'm studying and I'm doing an academic project and came across a problem. I can not recall a session variable.

package.json

package.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"
}

server.js

server.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 }
}));

main.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));
}

login.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中,请参见// It does not work :-(. https://github.com/braulioti/pecuniam

In login.js see // It does not work :-(. Full project in https://github.com/braulioti/pecuniam

谢谢

推荐答案

问题是路由是在任何其他中间件之前设置的.移动此行:

The problem is that the routes are set up before any other middleware. Move this line:

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

在此之后:

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

在您的server.js中.

这篇关于使用NodeJS和Express 4.x的会话(请求会话未定义)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆