首页 > 解决方案 > 与 MySQL 存储的快速会话不保存用户

问题描述

我正在使用 express-session 处理 Node.js 应用程序中的用户会话。问题是在为 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: '/',
    }
}));

控制台结果:
控制台结果

标签: node.jsexpressexpress-session

解决方案


尝试初始化会话:

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 并保护它。


推荐阅读