Express-Session не сохраняется / работает в производственном режиме, даже если в параметрах сеанса есть опция сохранения - PullRequest
0 голосов
/ 17 февраля 2019

Я видел много постов по этой проблеме, но не смог получить ответ.Во многих сообщениях ответы должны иметь хранилище сеанса.

В моем проекте у меня есть сеанс - хранилище, но проблема все еще сохраняется

Я использую connect-session-firebase и Firestore длясохраняя сеанс, но все равно я не получаю постоянный сеанс.

Работает нормально в разработке, но не в Производстве, даже если имеется сессия хранилища

Мои коды server.js

const session = require('express-session')
const cors = require('cors')
const helmet = require('helmet')
const { port , sessionSecretKey} = require('./configs/config')
var cookieParser = require('cookie-parser')
var flash = require('connect-flash');

const { store} = require('./configs/sessionStorage/firebaseSessionStorage')
const {dbname,MONGODB_URL,sessionKeys} = require('./configs/config.js')
//database connection
mongoose.connect(MONGODB_URL,{
  useNewUrlParser: true
});
const app = express();

app.use(helmet());

app.use(bodyParser.urlencoded({extended: true, limit: '50mb'}))
app.use(bodyParser.json({limit: '50mb'}))

app.use(cookieParser());

app.use(session({
  store,
  secret: sessionSecretKey,
  resave: true,
  saveUninitialized: true,
  cookie: {
    secure: process.env.NODE_ENV == "production" ? true : false ,
    maxAge: 1000 * 60 * 60 * 24 * 7
  }
}));

Теперь я создал промежуточное ПО с каждым запросом только дляподсчитать представление, используя сеанс

app.use(function(req,res,next){

  res.locals.user = req.user || null;
  if(req.session.views){
    req.session.views += 1
    req.session.save();
  }else{
    req.session.views = 1
    req.session.save();
  }
  console.log('req.session.views', req.session.views)
  next();
})

его выдача выдачи req.session.views 1 в рабочем состоянии

сценарий PM2 для запуска pm2-runtime start ecosystem.config.js --env production

ecosystem.config.js

module.exports = {
  apps : [{
    name: 'server',
    script: 'server.js',
    // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
    instances: 2,
    autorestart: true,
    watch: false,
    max_memory_restart: '1G',
    env: {
      NODE_ENV: 'development'
    },
    env_production: {
      NODE_ENV: 'production'
    }
  }],

  deploy : {
    production : {
      user : 'node',
      host : '212.83.163.1',
      ref  : 'origin/master',
      repo : 'git@github.com:repo.git',
      path : '/var/www/production',
      'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production'
    }
  }
};

А также при аутентификации пользователя он не может сохранить пользователя.Даже коллекция firestore, то есть база данных сеансов, заполняется сеансами как в производстве, так и в разработке, но сеанс не сохраняется

Спасибо за ваше время

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...