2016-05-31 2 views
1

Ich habe mehrere MEAN-Anwendungen mit Express-Sitzung auf einem einzelnen Server unter mehreren Ports ausgeführt. Wenn ich mich in Anwendung A authentifiziere, wird das festgelegte Token für die andere (Anwendung B) modifiziert. Die authentifizierte Benutzersitzung für Anwendung B wird dann verweigert.Multiple Express mit Express-Session-Anwendungen auf einem Server, verschiedene Ports

Wie konfiguriere ich alle meine Anwendungen, um Tokens unabhängig voneinander zu verifizieren und zu verifizieren? Auf dem lokalen Host beispielsweise wird Anwendung A auf Port 80 und Anwendung B auf Port 90 ausgeführt. Ich möchte, dass ein Benutzer die Anwendung A authentifizieren und verwenden kann, ohne die Anwendung B anderer Benutzer zu unterbrechen. Hier

ist der Code in meiner app.js-Datei, die auf meine Frage relevant sein sollte:

// Connect to database 
mongoose.connect(config.mongo.uri, config.mongo.options); 

var connection = mongoose.createConnection(config.mongo.uri, config.mongo.options); 

var app = express(); 

// enable CORS 
app.use(cors()); 

// enable cookieParser 
app.use(cookieParser()); 

// enable session 
app.use(session({ 
    secret: config.secrets.session, 
    resave: false, 
    saveUninitialized: true, 
    name: 'uniqueSessionId', 
    store: new MongoStore(
     { 
      mongooseConnection: connection 
     } 
    ) 
})); 

Antwort

1

Cookies (die verwendet werden, um die Sitzungs-ID in speichern) werden über alle Ports auf einem bestimmten Hostnamen geteilt Aus diesem Grund stören sich deine Apps gegenseitig.

Die Dokumentation von express-session schlägt vor, die folgenden:

, wenn Sie auf dem gleichen Hostnamen mehrere Anwendungen laufen haben (dies ist nur der Name, dh localhost oder 127.0.0.1, verschiedene Systeme und Häfen nicht nennen einen anderen Host-Namen), dann müssen Sie die Sitzungs-Cookies voneinander trennen. Die einfachste Methode besteht darin, einfach verschiedene name s pro App festzulegen.

+0

In der Dokumentation habe ich versucht, mein Sitzungsobjekt durch einen eindeutigen Namen zu ändern, aber es hat nicht funktioniert. Die beiden Anwendungen stören sich immer noch gegenseitig. – Bibble

+0

Haben Sie die alten Cookies auch entfernt? – robertklep

+0

Ja, ich sehe die neuen Namen der Anwendungs-Cookies und einen Cookie namens "Token". Ich frage mich, ob es einen Token-Cookie für jede Anwendung statt einer geben sollte? Es scheint mir, dass der Token-Cookie derjenige ist, der von jeder Anwendung modifiziert wird. – Bibble

Verwandte Themen