如何编写一个模块来处理 ExpressJS 会话?
How can I write a module to handle ExpressJS 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 错误:none
浏览器错误:none 但什么也没有。我的意思是既没有回应。继续等待
这里有什么问题。任何帮助将不胜感激。谢谢
我已经在示例应用程序上复制了您的场景,并在 "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'));
它的工作绝对找到。
您能否分享您的错误日志以获取更多详细信息?
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
}));
这就是我通常在 express 中使用 express-session 的方式。
我已通过将 "app" 直接传递到模块而不是从模块返回会话来解决问题。
固定代码如下所示:
// 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);
我是 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 错误:none 浏览器错误:none 但什么也没有。我的意思是既没有回应。继续等待
这里有什么问题。任何帮助将不胜感激。谢谢
我已经在示例应用程序上复制了您的场景,并在 "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'));
它的工作绝对找到。 您能否分享您的错误日志以获取更多详细信息?
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
}));
这就是我通常在 express 中使用 express-session 的方式。
我已通过将 "app" 直接传递到模块而不是从模块返回会话来解决问题。
固定代码如下所示:
// 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);