Attualmente ho due app nodo separate in esecuzione su due porte diverse ma condividono lo stesso archivio dati di backend. Devo condividere le sessioni degli utenti tra le due app in modo che quando un utente accede a una app, la sua sessione sia disponibile e sembra che si colleghi all'altra app. In questo caso, è un sito Web pubblico e un backend amministrativo.Sessioni condivise tra app di nodo?
La nostra impostazione è la seguente:
- nodo con espressa
- passaporto viene utilizzato per gestire autenticazione con la strategia locale
- stiamo usando connect-Redis per permetterci di condividere le sessioni tramite Redis .
- nostri domini simile a questa: www.mydomain.com e adm.mydomain.com
La configurazione per per le cose di sessione (e Redis) è lo stesso per entrambe le applicazioni:
session: {
options: {
secret: "my secret",
cookie: {
domain: "mydomain.com",
maxAge:1000*60*60*24
}
},
redis: {
host: 'my host',
maxAge: 86400000,
secret: "my secret"
}
}
la configurazione per roba sessione app.js assomiglia a questo:
if (app.settings.env === "production") {
session.options.store = new RedisStore(session.redis);
}
app.use(express.session(session.options));
app.use(passport.initialize());
app.use(passport.session({ secret: 'a different secret' }));
Cosa mi aspetto che faccia: ci permettono di vedere lo stesso Sess ID ion nel cookie tra le due app.
Quindi la mia domanda è: Come configurare express, redis e passport in modo che sia possibile condividere sessioni tra diversi sottodomini?
Penso che potrebbe essere necessario per specificare il dominio dei cookie come '" .mydomain.com "' - nota l'iniziale '.'. –
senza un "*"? Abbiamo utilizzato "* .mydomain.com" ieri in un test e non sembra funzionare. Stamattina darò una prova e vedere quale sia il risultato. – jpittman
Hai inserito un '*', giusto? In tal caso, sì, solo il punto principale. Penso che sia ciò che rende un cookie leggibile da diversi sottodomini. Fammi sapere e potrei fornirlo come risposta. –