nodejs-express-req.session nicht speichern meine variable
Ich werde eine grundlegende admin-auth, wenn der Benutzer angemeldet ist, rufe ich diese Funktion in der authcallback :
function checkAdmin (req) {
Admin.findOne( { user : req.user.id },function ( err, admin, count ){
req.session.isAdmin = true;
console.log("session : %j",req.session);
})
}
Und dann Mach ich
res.redirect('/')
Den code in die index-controller :
console.log("session : %j",req.session);
res.render('index', { title: 'Accueil',message: req.flash('info') });
Und das ist es, was ich in der Konsole :
session : {"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path"
:"/"},"passport":{"user":"5079832df1e9a6485e000001"},"flash":{},"isAdmin":true}
session : {"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path"
:"/"},"passport":{"user":"5079832df1e9a6485e000001"},"flash":{}}
Verstehe ich nicht, warum die Sitzung nicht speichern Sie die isAdmin-Wert.
Ich gelesen habe einige andere Fragen, die sagen, dass die app.verwenden(app.router) Ort könnte eine Ursache sein, aber ich weiß :
app.use(cookieParser)
app.use(express.session({store: session_store }));
app.use(passport.initialize())
app.use(passport.session())
//routes should be at the last
app.use(app.router)
Muss es sein, die Art von idiot, denke ich ..
- Vielleicht so etwas wie diese können helfen: erf.Sitzung.regenerieren github.com/senchalabs/connect/issues/681
- So würde es bedeuten, dass jedes mal, wenn ich will, ändern/fügen Sie eine variable in der session von nI verwenden müssen, req.Sitzung.regenerieren ?
- Wahrscheinlich sollten Sie umleiten innen checkAdmin Funktion.
- Ich Stimme zu, ich habe keine Ahnung, was
regenerate
tut. Die docs sagen: "die Regeneration der session einfach die Methode aufrufen, einmal komplett eine neue SID und Session-Instanz initialisiert wird an req.Sitzung." Wie unterscheidet sich dies von, sagen wir,reload
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut,
Endlich habe ich gefunden, warum es nicht funktioniert. Ich habe die res.Umleitung außerhalb meiner Admin.findOne-Funktion. Also den client umgeleitet wurde, bevor die session-variable gesetzt wurde.
Diese authCallbackFunction arbeitet :
Wenn der Benutzer Abmelden, vergessen Sie nicht, sich zu regenerieren der session