Node.js 在nodejs,express.js中,如何正确管理一个用户帐户的多次登录?

Node.js 在nodejs,express.js中,如何正确管理一个用户帐户的多次登录?,node.js,express,passport.js,express-session,connect-mongo,Node.js,Express,Passport.js,Express Session,Connect Mongo,我在mongodb中使用express session、passport和connect mongo进行保存会话。 mypackage.json "dependencies": { "axios": "^0.18.0", "bcrypt": "^3.0.5", "body-parser": "^1.18.3", "bootstrap": "^4.3.1", "chalk": "^2.4.2",

我在mongodb中使用express session、passport和connect mongo进行保存会话。 mypackage.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)。你不必为此担心

首先,您必须了解会话如何工作的概念

会话将是存储在客户端的唯一标识符(称为“会话id”)。每次浏览器发出HTTP请求(即页面链接或AJAX请求)时,都会将该会话id传递给web服务器。web应用程序将传入的会话id与其内部数据库(redis等)匹配,并检索存储的变量以供请求的页面使用


因此,如果您使用相同的帐户登录到不同的浏览器,存储的会话信息将是唯一的(基于会话id)。你不必为此担心

感谢您回答@narayansharma91,如果我解释得不好,我很抱歉,我认为我理解它,但仍然有疑问1-对于同一用户的多登录支持有一些标准吗?2-是否有必要限制用户可以同时登录的会话数?作为最大值,我的意思是3-我如何使会话与最新的购物车数据一起工作?你的意思是说,如果有人登录到不同的浏览器,你想在两个浏览器上显示购物卡信息,对吗?如果这是我指的事情之一,但我已经知道如何做,另一个问题是,当同一用户的一个活动会话更改密码时,其他会话将无效,express session是否有办法处理此问题?我可以自己做,删除活动会话,除了更改密码的会话,但我不知道这是否与express会话冲突,有什么建议吗?感谢您回答感谢您回答@narayansharma91,如果我解释自己不好,我很抱歉,我认为我理解它,但仍然有疑问1-对于同一用户的多登录支持有一些标准吗?2-是否有必要限制用户可以同时登录的会话数?作为最大值,我的意思是3-我如何使会话与最新的购物车数据一起工作?你的意思是说,如果有人登录到不同的浏览器,你想在两个浏览器上显示购物卡信息,对吗?如果这是我指的事情之一,但我已经知道如何做,另一个问题是,当同一用户的一个活动会话更改密码时,其他会话将无效,express session是否有办法处理此问题?我可以自己做,删除活动会话,除了更改密码的会话,但我不知道这是否与express会话冲突,有什么建议吗?谢谢你的回答