使用 MySQL 存储的快速会话不会保存用户
Express-session with MySQL storage does not save user
我在 Node.js 应用程序中使用 express-session 处理用户会话。问题是在为 MySQL 存储重写它之后,似乎在更改路由后所有信息都消失了,我的中间件再次将我重定向到登录页面。
我的代码:
let options = {
host: "localhost",
user: "root",
port: 3306,
password: "",
database: "cursova"
}
var sessionStore = new MySQLStore(options, con);
app.use(session({
key: 'myCookie',
secret: 'secret12345',
store: sessionStore,
resave: false,
saveUninitialized: false,
cookie: {
originalMaxAge: 1000 * 60 * 5,
maxAge: 60000 * 5,
secure: true,
path: '/',
}
}));
控制台结果:
尝试初始化会话:
app.use((req, res, next) => {
req.session.init = "init";
next();
});
对于会话,我有这个:
const options = {
host: config.db.host,
port: config.db.port,
user: config.db.user,
password: config.db.password,
database: config.db.database
};
const sessionStore = new MySQLStore(options);
const expiryDate = new Date(Date.now() + 24 * 60 * 60 * 1000); // 1 hour
app.use(session({
store: sessionStore,
secret: process.env.SESSIONSECRET,
resave: false,
saveUninitialized: false,
cookie: {
//secure: true,
//httpOnly: true,
expires: expiryDate
}
}));
我没有传递连接,也没有密钥。我添加了 HTTP 并在我知道它有效后保护它。
问题很可能是因为来自 cookie 的“secure: true”。这意味着只有在您使用 HTTPS 时才会保存 cookie。尝试将其设置为 false
我在 Node.js 应用程序中使用 express-session 处理用户会话。问题是在为 MySQL 存储重写它之后,似乎在更改路由后所有信息都消失了,我的中间件再次将我重定向到登录页面。 我的代码:
let options = {
host: "localhost",
user: "root",
port: 3306,
password: "",
database: "cursova"
}
var sessionStore = new MySQLStore(options, con);
app.use(session({
key: 'myCookie',
secret: 'secret12345',
store: sessionStore,
resave: false,
saveUninitialized: false,
cookie: {
originalMaxAge: 1000 * 60 * 5,
maxAge: 60000 * 5,
secure: true,
path: '/',
}
}));
控制台结果:
尝试初始化会话:
app.use((req, res, next) => {
req.session.init = "init";
next();
});
对于会话,我有这个:
const options = {
host: config.db.host,
port: config.db.port,
user: config.db.user,
password: config.db.password,
database: config.db.database
};
const sessionStore = new MySQLStore(options);
const expiryDate = new Date(Date.now() + 24 * 60 * 60 * 1000); // 1 hour
app.use(session({
store: sessionStore,
secret: process.env.SESSIONSECRET,
resave: false,
saveUninitialized: false,
cookie: {
//secure: true,
//httpOnly: true,
expires: expiryDate
}
}));
我没有传递连接,也没有密钥。我添加了 HTTP 并在我知道它有效后保护它。
问题很可能是因为来自 cookie 的“secure: true”。这意味着只有在您使用 HTTPS 时才会保存 cookie。尝试将其设置为 false