Si dovrebbe introdurre il seguente codice nel tuo app, accanto alla configurazione delle strategie:
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(obj, done) {
done(null, obj);
});
In questo modo, quando si richiama la funzione done
con l'utente autenticato, il passaporto si occupa di conservare la userId in un cookie. Ogni volta che si desidera accedere a userId lo si può trovare nel corpo della richiesta. (in espresso req["user"]
).
È anche possibile sviluppare la funzione serializeUser
se si desidera memorizzare altri dati nella sessione. Lo faccio in questo modo:
passport.serializeUser(function(user, done) {
done(null, {
id: user["id"],
userName: user["userName"],
email: user["email"]
});
});
È possibile trovare maggiori qui: http://passportjs.org/docs/configure
ho questo già mi mio codice - ma ho bisogno di accedere al cookie sul lato client, utilizzando JavaScript - è possibile? –
Mi dispiace, non l'ho capito dalla tua domanda. Ho appena analizzato i cookie nella mia app node.js e non vedo un set di passportjs. Connect imposta semplicemente un cookie con sessionId. Il resto dei dati è memorizzato sul server. Credo che dovresti impostare manualmente un cookie con i dati desiderati e quindi analizzarlo utilizzando javascript sul client. (utilizzando express: [link] (http://expressjs.com/api.html#res.cookie)). – AnduA
ho già risolto il problema impostando un proprio cookie ma grazie per le tue informazioni! –