我在mongodb中使用快速会话,护照和connect-mongo进行保存会话。我的package.json
"dependencies": {
"axios": "^0.18.0",
"bcrypt": "^3.0.5",
"body-parser": "^1.18.3",
"bootstrap": "^4.3.1",
"chalk": "^2.4.2",
"chart.js": "^2.8.0",
"cheerio": "^1.0.0-rc.2",
"clockwork": "^0.1.4",
"compression": "^1.7.4",
"connect-mongo": "^2.0.3",
"dotenv": "^7.0.0",
"errorhandler": "^1.5.0",
"express": "^4.16.4",
"express-flash": "^0.0.2",
"express-handlebars": "^3.0.2",
"express-session": "^1.15.6",
"express-session-passport-cleanup": "^1.0.3",
"express-status-monitor": "^1.2.3",
"express-validator": "^5.3.1",
"lastfm": "^0.9.3",
"lob": "^6.0.5",
"lodash": "^4.17.11",
"lusca": "^1.6.1",
"mongoose": "^5.4.20",
"morgan": "^1.9.1",
"multer": "^1.4.1",
"node-linkedin": "^0.5.6",
"node-sass": "^4.11.0",
"node-sass-middleware": "^0.11.0",
"nodemailer": "^6.0.0",
"passport": "^0.4.0",
"passport-local": "^1.0.0",
"pug": "^2.0.3",
"request": "^2.88.0",
"stripe": "^6.28.0",
"uuid": "^3.3.2",
"validator": "^10.11.0"
},
这工作正常,可以从同一个用户帐户,在隐身或其他浏览器或不同设备的同一浏览器中进行多次登录,但我不知道管理这个的正确方法是什么。我不会在同一用户的会话和购物车存储之间产生错误。
如何从一个用户帐户处理多个登录的标准管理方式,我的意思是在会话上始终链接到上次更新的数据以及商店,这样就不会发生错误。
首先,您必须了解会话如何工作的概念。
会话将是一个存储在客户端的唯一标识符(称为“会话ID”)。每次浏览器发出HTTP请求(即页面链接或AJAX请求)时,此会话ID都会传递给Web服务器。 Web应用程序将传入的会话ID与内部数据库(redis等)进行匹配,并检索存储的变量以供请求的页面使用。
因此,如果您使用相同的帐户登录到不同的浏览器,则存储的会话信息将是唯一的(基于会话ID)。你不必担心它。