We use express-session library to handle the request sessions. A session sometimes is overwritten by another parallel session.
For example, a Client A accesses our app and generates Session #A. After that, another Client B creates Session #B. Then the client A refresh the same app and find its session is changed as Session #B. In other words, the Session #A has been replaced by Session #B.
Does anyone have experience resolving a similar issue?
Part of my source code is attached below: written in TypeScript. The session config is defined in sess.ts. The store I am using is express-oracle-session.
sess.ts
exports.configSession = () => {
let oracledb = require('oracledb');
let session = require('express-session');
let oracleDbStore = require('express-oracle-session')(session);
let sessOpts = {
checkExpirationInterval: 60000,
createDatabaseTable: true,
schema: {
tableName: 'ldap_sessions'
}
};
return new Promise((resolve, reject) => {
oracledb.getConnection('oracle_db', (err, conn) => {
if (err) {
return reject(err.message);
}
let sessionStore = new oracleDbStore(sessOpts, conn);
let sessConfig = {
secret: 'ldap secret',
resave: true,
saveUninitialized: true,
rolling: true,
cookie : {
httpOnly: false,
maxAge: 1000 * 60 * 60 * 24
store: sessionStore
};
return resolve(session(sessConfig));}
)});
};
server.ts
let configSess = require('./sess');
let cookieParser = require('cookie-parser');
let bodyParser = require('body-parser');
configSess.configSession().then((sess) => {
app.use(sess);
startServer();
});