1

mongodb でセッションを保存するために、express-session、passport、および 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"
    },

これは正常に機能し、同じユーザーアカウントから、シークレットモードの同じブラウザー、または他のブラウザーまたは異なるデバイスで複数のログインが可能ですが、これを管理する正しい方法が何であるかはわかりません。同じユーザーのセッションとショッピング カートのストレージとの間でエラーが発生しないようにします。

1 つのユーザー アカウントからの複数のログインを処理するための標準的な管理方法はどのようなものですか。間違いが起こらないように、セッションを常に最新の更新データとストアにリンクすることを意味します。

4

1 に答える 1

0

まず、セッションの仕組みの概念を理解する必要があります。

セッションは、クライアント側に保存される一意の識別子になります (「セッション ID」と呼ばれます)。このセッション ID は、ブラウザーが HTTP 要求 (つまり、ページ リンクまたは AJAX 要求) を行うたびに Web サーバーに渡されます。Web アプリケーションは、着信セッション ID を内部データベース (redis など) と照合し、要求されたページで使用するために保存された変数を取得します。

そのため、同じアカウントを使用して別のブラウザーにログインした場合、保存されたセッション情報は (セッション ID に基づいて) 一意になります。心配する必要はありません。

于 2019-04-08T11:29:48.523 に答える