2016-08-09 29 views
1

Mein Benutzer muss sich anmelden, bevor er auf eine beliebige Route zugreifen kann, aber warum in der zweiten Route res.username ist nicht definiert?eingestellt auf req und Zugriff auf eine andere Route

router.post('/login', passport.authenticate('local'), function(req, res) { 
    res.username = req.user.name; 
    res.json({result:1,username:req.user.name}); //work 
}); 

router.post('/some_other_route', function(req, res, next) { 
    console.log(res.username) // undefined 
}) 

Ich benutze Express-Sitzung Middleware mit Reisepass.

+0

Ich sehe keine Beziehung zwischen diesen Routen .. – Rayon

+0

@Rayon warum ist verwandt zu sein hat? Ich bekomme Sie nicht –

Antwort

0

Wenn Sie express-session richtig verwenden, sollten Sie req.session.username = req.user.name; verwenden. Hier

ist der Link: https://github.com/expressjs/session

req.session

To store or access session data, simply use the request property req.session, which is (generally) serialized as JSON by the store, so nested objects are typically fine. For example below is a user-specific view counter: 

// Use the session middleware 
app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }})) 

// Access the session as req.session 
app.get('/', function(req, res, next) { 
    var sess = req.session 
    if (sess.views) { 
    sess.views++ 
    res.setHeader('Content-Type', 'text/html') 
    res.write('<p>views: ' + sess.views + '</p>') 
    res.write('<p>expires in: ' + (sess.cookie.maxAge/1000) + 's</p>') 
    res.end() 
    } else { 
    sess.views = 1 
    res.end('welcome to the session demo. refresh!') 
    } 
}) 
+0

die Sitzung muss auf Anfrage und nicht auf Antwort eingerichtet werden. Es hätte req.session.username – V31

+0

also 'res.session.username = res.user.name' sein sollen? –

+0

@MariaJane Ja, Sie haben Recht. aktualisierte die Antwort. – BlackMamba