我是NodeJS和ExpressJS的新手,并试图建立与MySQL数据存储的会话功能。至于如何调用它,我遵循了文档,但在运行这些命令后,req.session未定义。我已经证实,当我实例化cookie和会话时,我有一个到MySQL数据库的活动连接和一个常见的cookie秘密。我没有得到任何错误,但这里是控制台调试输出...ExpressJS会话与MySQL数据存储不起作用
终端$清晰; DEBUG =表达对MySQL的会话* NPM启动
[email protected]启动node_app
节点./bin/www
GET /登录200 7.458毫秒 - 249
快递MySQL的会话:记录生成会话存储+ 0毫秒
快递MySQL的会话:登录设置默认选项+ 3ms的
POST /登录200 40.744毫秒 - 47个
快递MySQL的会话:登录设置有效期:900000ms + 7毫秒
express- MySQL的会话:登录结算到期间隔+ 0ms`
运行此,当我试图使调试......
var pool = mysql.createPool(options);
我没有看到一个查询甚至试图运行将会话添加到会话表。
这是我的应用程序流程: 在我的main.js文件中,我捕获了顶部的所有请求并检查有效会话,如果我没有找到一个,我会显示登录表单。
app.get('/*',function(req, res){
if (!req.session) {
var login = require('../js/login_functions');
res.send(login.getLoginForm());
}});
登录表单张贴到/ login,我验证用户名/密码验证,然后我创建一个会话与所需的session.js文件。以下是在session.js
var config = require('../admin/config');
var express = require('express');
var app = module.exports = express();
var db = require('../js/database');
var session = require('express-session');
var MySQLStore = require('express-mysql-session')(session);
module.exports = {
createSession: function(req, callback){
db.getConnection(function(connection){
var session_store_options = {
checkExpirationInterval: 900000,// How frequently expired sessions will be cleared; milliseconds.
expiration: config.SESS_MAX_AGE,// 10 hours session expiration
createDatabaseTable: false,
connectionLimit: config.DB_CONNECTION_LIMIT,
schema: {
tableName: config.SESS_TABLE_NAME,
columnNames: {
session_id: 'session_id',
expires: 'expires',
data: 'user_data'
}
}
};
var session_options = {
key: config.SESS_COOKIE_NAME,
secret: config.SESS_SECRET,
store: new MySQLStore(session_store_options, connection),
cookie: { maxAge: config.SESS_MAX_AGE },
genid: function(req) {
return genuuid() // use UUID for session ID
},
rolling: true,
resave: false,
saveUninitialized: false,
};
if(config.ENV.toLowerCase() === 'prod'){
session_options.cookie.secure = true;
}
app.use(session(session_options));
if(config.DEBUG){
console.log(req.session);
}
callback(session);
});
}
};
当运行在上述底部的的console.log(req.session)的代码,输出不确定的。我是否错过了调用cookie和db store会话的步骤?