我看到了很多有关此问题的帖子,但找不到答案。 在许多帖子中,答案都是有会话存储的。
在我的项目中,我正在进行会话-存储,但问题仍然存在 坚持
我正在使用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集合(即会话数据库)都充满了生产和开发过程中的会话,但会话仍未持久
感谢您的时间