2014-11-21 7 views

risposta

15

Si dovrebbe sempre, sempre uso req.user nel proprio codice - questo è importante perché se si utilizza req.session.passport.user, si sta essenzialmente tirando le informazioni utente da un cookie di sessione (che non può essere aggiornato).

È sempre meglio fare affidamento su req.user anziché direttamente sui dati dei cookie, in quanto a seconda dell'implementazione, tali informazioni potrebbero non essere aggiornate.

E per rispondere alla tua domanda: se si registra un utente, sia req.session e req.user non saranno più disponibili.

+0

Non 'req.session.passport.user' sta effettivamente tracciando informazioni dalla sessione stessa (non il cookie di sessione)? Potrei essere in qualche modo in errore, ma a meno che tu non abbia sessioni disabilitate non è 'req.user' veramente solo mappato a' req.session.passport.user'? Non riesco a vedere come i due sarebbero effettivamente mai diversi. Ora se si dovesse memorizzare in qualche modo i dati effettivi nel cookie (rispetto al solo id di sessione) e quindi accedere a tali dati tramite 'req.cookies', allora potrebbe certamente non essere aggiornato, ma quello è uno scenario completamente diverso. – nextgentech

+0

No - 'req.session.passport.user' viene estratto dal cookie di sessione (da nessun'altra parte). Questo è il modo in cui funziona con l'autenticazione della sessione basata su cookie, a meno che tu non stia utilizzando un altro modulo. – rdegges

+0

Forse stiamo parlando di cose diverse, ma questo non ha senso nel contesto dell'utilizzo di un MemoryStore o di una memoria di sessione basata su server. Quando si utilizza un archivio di sessione lato server, il cookie di sessione (inviato al browser) memorizza solo l'ID di sessione. Tutti i dati rimangono sul server. L'intero punto di una sessione è di mantenere i dati disponibili e aggiornati sul server per un determinato utente. Il cookie di sessione consente solo a un browser di rimanere collegato a una determinata sessione. L'accesso ai dati tramite 'req.session' conterrà sempre le ultime informazioni sulla sessione. – nextgentech