2016-10-06 15 views
0

Ich bin mit meinen Klienten (frondend) App Express App in einem Port 3000 und einem anderen Admin-express App in 8080Wie mehrere Express/Nodejs-Anwendung in localhost ausführen?

Aber wenn ich alle Seiten bin navigieren oder Auffrischen jede Seite in Client-Express-Anwendung, die Sitzung im Admin-App ist verloren und leitet zur Anmeldung um.

Ich benutze Express-Session Npm für Admin und Wedel Ende ist genau wie ein CMS frongend, dh keine Sitzungen oder etwas Komplexes. Kann mir irgendjemand sagen, warum passiert das?

+1

Ohne zu wissen, wie Sie Setup die Sitzung in Ihrem Code Handhabung ist es nicht möglich zu sagen ist. Aber ich würde bezweifeln, dass die Sitzung _lost_ ist, weil ich in der anderen Knoten-App navigiert bin. Es ist wahrscheinlicher, dass Sie eine niedrige Lebensdauer für die Sitzung festlegen und dass sie aufgrund von Inaktivität nur zeitweise inaktiviert wird. –

Antwort

1

Cookies für eine App, die auf Port 3000 ausgeführt wird, werden auch an eine App gesendet, die auf Port 8080 ausgeführt wird (und umgekehrt).

Meine Vermutung ist, dass Sie nicht jeder App eine eindeutige cookie name gegeben haben, so dass Sie möglicherweise Interferenzen zwischen der Sitzungsbehandlung beider Apps bekommen.

So verwenden Sie einen anderen Cookie-Namen für jeden:

app.use(session({ 
    name : 'frontend.sid', // and, say, 'admin.sid' for the admin app 
    ... 
})); 
+0

Danke Robert .. Das funktioniert ... Und darf ich Sie noch fragen, was ich Session-Memory-Store-Modul gefunden habe. In der Express-Sitzung wird der Wert im Speicher gespeichert, wobei dies für die Produktion nicht praktikabel ist (wie im Dokument selbst nicht für die Produktion angegeben).So bieten die Verwendung von Session-Memory-Store Hilfe bei der Produktion? –

+0

@AkhilGopan Ich würde den Speicher nicht in der Produktion verwenden. Aber [es gibt viele Alternativen] (https://www.npmjs.com/package/express-session#compatible-session-stores), vielleicht eine, die mit einer Datenbank arbeitet, die Sie bereits verwenden. – robertklep

+0

Danke Robert ... Ich benutze Postgres und ich werde es implementieren. –

0

Run in verschiedenen Browsern:

versuchen eine von ihnen in anderen Browsern wie man in chrome und andere in mozilla. Es passiert, weil Session dort drüben kollidiert.

Das Ändern des Browsers könnte eine gute Lösung für Sie sein.

Wollen Sie in demselben Browser auszuführen:

Führen Sie einfach einen Dienst in normal mode und führen anderen Dienst in incognito mode

0

Auf der Grundlage der zur Verfügung gestellten Informationen würde ich vorschlagen, dass man sich über die Art, wie Sie die Express-Sitzung initialisieren. Wenn das Flag secure auf "true" gesetzt ist, wird ein gültiges HTTPS-Zertifikat für localhost erwartet, andernfalls wird die Sitzung nicht erstellt, was zu Umleitungsproblemen führen kann.

Aus der Dokumentation:

sicher: Gibt den Booleschen Wert für das Secure Set-Cookie Attribut. Wenn truthy, wird das Secure-Attribut gesetzt, ansonsten ist es nicht. Standardmäßig ist das Secure-Attribut nicht festgelegt. Bitte beachten Sie, dass secure: true eine empfohlene Option ist. Jedoch erfordert es eine https-fähige Website, d. H. HTTPS ist für sichere Cookies erforderlich. Wenn Sicherheit festgelegt ist und Sie über HTTP auf Ihre Site zugreifen, wird der Cookie nicht festgelegt.

Verwandte Themen