2016-07-16 6 views
0

Экспресс-сессия создает новый сеанс (новый sessionID) для нового запроса. И это случается с перерывами, например, иногда для первых 3-4 ударов он будет работать нормально и будет продолжать использовать тот же существующий сеанс, а с 4-го удара он создаст новый, Иногда он создаст новый сеанс по самому первому запросу.Экспресс, создающий новый сеанс для каждого запроса

Кроме того, эта проблема возникает на моем размещенном веб-сайте. Он отлично работает на локальном хосте.

Вещи, которые я уже пробовали и не работают ..

  1. Экспресс сеанс создается после статических маршрутов файлов.
  2. Секрет секретной сессии и cookie Секретные настройки установлены одинаково.
  3. Использование app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); для favicon.
  4. Установка очень высокого значения для поля максимального возраста при создании файла cookie.

Ниже мой app.js фрагмент -

var passport = require('passport'); 
var expressSession = require('express-session'); 
var app = express(); 
app.engine('hbs', hbs.express4({ 
    partialsDir: __dirname + '/views/partials' 
})); 
app.set('view engine', 'hbs'); 
app.set('views', path.join(__dirname, 'views')); 
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 

app.use(express.static(path.join(__dirname, 'public'))); 
var flash = require('connect-flash'); 
app.use(flash()); 

var initPassport = require('./passport/init'); 
initPassport(passport); 
//app.use(bodyParser.urlencoded()); 
app.use(cookieParser('mysecret')); 
app.use(expressSession({ secret: 'mysecret', name:'user', cookie: {maxAge: 60000000}})); 
app.use(passport.initialize()); 
app.use(passport.session()); 

Любой вид помощи будет весьма признателен. Благодарю.

ответ

0

Почему вы не используете MongoStore для хранения данных сеанса? может быть, это решит вашу проблему.

app.use(session({ 
    secret: 'mysecret', 
    resave: false, 
    saveUninitialized: false, 
    expires: new Date(Date.now() + (60 * 60 * 24 * 7 * 1000)), 
    cookie: { } , 
    store: new MongoStore({mongooseConnection: mongoose.connection}) 
})); 
+0

Да, я заменил код на MongoStore, и все работает. Но я все еще не могу понять, что вызвало проблему с хранилищем памяти OOTB. Может быть, потому, что мой сервер хостинга не поддерживает сеанс в памяти, или это может быть проблемой в самом экспресс-сеансе при использовании с хранилищем памяти. Его так сложно тратить время на старый код, когда новый работает :) –

Смежные вопросы