Я застрял, пытаясь использовать этот экспресс-сеанс.
Проблема в том, что он сохраняет сеанс только в первый раз с любым запросом. При перезагрузке страницы из браузера изменяется идентификатор сеанса, поэтому старое значение, которое я сохранил в сеансе, не определено. Даже в БД идентификатор сеанса продолжает меняться (т. Е. Новые записи на каждой перезагрузке страницы). Я пробовал много решений на GitHub и здесь, но никто из них не работал для меня. Пробовал maxAge
и т. Д., Но никто не работал.
Вот мой код:
var express = require('express'); var mysql = require('mysql'); var session = require('express-session'); var MySQLStore = require('express-mysql-session')(session); var app = express(); var bodyParser = require('body-parser'); app.use(bodyParser.json({type: '*/*'})); var http = require('http'); app.use(function (req, res, next) { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); next(); }); var connectionPool = mysql.createPool({ host: '127.0.0.1', user: 'root', password: '123456', database: 'cs_chat', connectionLimit: 2, }); var options = { host: '127.0.0.1', user: 'root', password: '123456', database: 'cs_chat', schema: { tableName: 'my_session', columnNames: { session_id: 'session_id', expires: 'expires_column_name', data: 'data_column_name' } } }; var sessionStore = new MySQLStore(options); var server=http.createServer(app); app.use(session({ secret: 'some secret', resave: false, saveUninitialized: true, store: sessionStore, cookie: { secure: false, maxAge: 36000000, httpOnly: false, }, })); app.get("/test", function(req, res, next){ console.log(req.session); console.log(req.sessionID, req.session.name); if(!req.session.name){ console.log("Not set."); req.session.name = "vikas kumar"; } else { console.log("Already set"); console.log(req.session.name); } res.end(); }); server.listen(3000, '0.0.0.0', function(){ var host = server.address().address; var port = server.address().port; console.log("testApp socket server is listening at http://%s:%s", host, port+"\n\n"); });
В консоли я вижу « Не задавать» каждый раз.