This code is for a NodeJS server, and is supposed to keep the user connected while the session is not closed, but the session is regenerating on every refresh, I don't know why... When I check my browser, I can't see any cookie.
Here is my code :
const express = require("express")
const app = express()
const fs = require("fs")
const session = require("express-session")
const mysql = require("mysql")
var MySqlStore = require('express-mysql-session')(session)
const options = {
key: fs.readFileSync('/etc/letsencrypt/live/mydomain/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/mydomain/fullchain.pem')
};
const server = require("https").createServer(options, app)
const db_store = mysql.createConnection({
host: "localhost",
user: "root",
password: "password",
database: "session_storage",
port: '/var/run/mysqld/mysqld.sock'
})
db_store.connect(function(err) {
if (err) throw err;
console.log("Connected to \"session_storage\"")
})
var store = new MySqlStore({}, db_store)
app.set("views", "./views")
app.set("view engine", "ejs")
app.set('trust proxy', 1)
var sessionMiddleware = session({
key: 'session-key',
secret: "sercret-password",
store: store,
name: "session-name",
saveUninitialized: false,
resave: false,
cookie: {
sameSite: false,
secure: true,
httpOnly: true
}
});
app.use(sessionMiddleware);
app.use(cors({origin: "mydomain.com", methods: ["POST", "PUT", "GET", "OPTIONS", "HEAD"], credentials: true}));
// This test is supposed to print "undefined" for the first request and then "test"
app.get("/", (req, res) => {
res.status(200).render("index")
console.log(req.session.test)
req.session.test = "test"
req.session.save()
});
server.listen(443, () => {
console.log("Server now listening on port 443")
})
Sorry if my english is not perfect.