Я видел много постов по этой проблеме, но не смог получить ответ.Во многих сообщениях ответы должны иметь хранилище сеанса.
В моем проекте у меня есть сеанс - хранилище, но проблема все еще сохраняется
Я использую 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, то есть база данных сеансов, заполняется сеансами как в производстве, так и в разработке, но сеанс не сохраняется
Спасибо за ваше время