因為用 pm2 啟動 node, cluster 模式啟動4個進程, session 不能共享。為了解決這個問題,把 session 存到數據庫里。有兩個比較好的選擇,一個是 redis(沒用過,過幾天試試),另一個是 mongodb,mongodb 最好是運行在 in memory 引擎下,把數據存在內存中,可以比較快。但是查了社區版沒有這個功能。
connect-mongo 地址
根據本地開發還是服務器上選擇不同的 session 存儲位置
if (process.env.NODE_ENV === 'production') {
app.use(session({
secret: 'myweb',
name: 'lsx',
cookie: {
maxAge: 1800000
},
resave: false,
saveUninitialized: true,
store: new MongoStore({url:'mongodb://localhost/my_web_session'})
}))
} else {
app.use(session({
secret: 'myweb',
name: 'lsx',
cookie: {
maxAge: 1800000
},
resave: false,
saveUninitialized: true,
}));
}
并不需要在 mongodb 中自己手動建立 my_web_session, connect-mongo 會自動創建。
查看 mongodb 中的 session
mongo
show dbs
use my_web_session
show collections
db.session.find()