如何编写模块来处理ExpressJS会话?

时间:2017-05-05 12:16:15

标签: javascript node.js express express-session

我是ExpressJS的新手(仅仅3个月),我正在尝试制作一个项目,以实践到目前为止我学到的知识。

我试过写一个模块来处理快速会话。但它似乎没有用 - 没有错误,也没有回应。

代码是:

var express = require("express");
var session = require('express-session');
var MySQLStore = require('express-mysql-session')(session);

// MySQL Session Configuration
const mySQLSessionConfiguration = {
    host: 'localhost',
    port: 1234,
    user: 'thisIsNotMyRealUsername',
    password: 'neitherThisIsMyRealPassword',
    database: 'aDatabase'
};

// Create Session
module.exports = function (){
    return (session({
    store: new MySQLStore(mySQLSessionConfiguration),
    secret: 'LOL',
    resave: true,
    saveUninitialized: true
    }));
};

并在我的index.js文件中:

app.use(require("./modules/session.js"));

//如果我直接在index.js中写这个代码,但代码工作正常,但我想写一个模块 - 我想学习。

CLI错误:无 浏览器出错:没有,但没有。我的意思是既不是回应。等待

这里错了。任何帮助将不胜感激。感谢

3 个答案:

答案 0 :(得分:0)

我在示例应用程序上复制了您的场景,并在“session.js”文件中编写了以下代码

var clientsession = require('client-sessions');

module.exports = function (){
  return (clientsession({
    cookieName: 'session',
    secret: 'secret',
    duration: 30 * 60 * 1000,
    activeDuration: 5 * 60 * 1000,
    }));
};

然后在server.js中我使用它如下:

app.use(require('./session.js'));

它的工作绝对找到。 您可以分享您的错误日志以获取更多详细信息吗?

答案 1 :(得分:0)

var cookieParser = require('cookie-parser');    
var session = require('express-session');
var MySQLStore = require('express-mysql-session')(session);

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : '< MySQL username >',
  password : '< MySQL password >',
  database : '<your database name>'
});

connection.connect();

app.use(cookieParser());
app.use(session({
  secret: 'supersecret',
  resave: true,
  saveUninitialized: true,
  store: new mySQLStore(mysqlConnection: mysql.connection),
  cookie: { maxAge: 1000 } //whatever you'd like
}));

这就是我通常使用快速会话来表达的方式。

答案 2 :(得分:0)

我通过传递&#34; app&#34;解决了这个问题。直接进入模块而不是从模块返回会话。

固定代码如下所示:

// var express = require("express"); -- not required at all
var session = require('express-session');
var MySQLStore = require('express-mysql-session')(session);

// MySQL Session Configuration
const mySQLSessionConfiguration = {
    host: 'localhost',
    port: 1234,
    user: 'thisIsNotMyRealUsername',
    password: 'neitherThisIsMyRealPassword',
    database: 'aDatabase'
};

// Create Session
module.exports = function (app){    // app received :D
    app.use(session({               // app.use instead of return
    store: new MySQLStore(mySQLSessionConfiguration),
    secret: 'LOL',
    resave: true,
    saveUninitialized: true
    }));
};

并在index.js

var alpha = require("./modules/session.js")(app);