2013-07-19 1 views

risposta

18

È possibile utilizzare req.isAuthenticated() per verificare se la richiesta è autenticata o meno.

function ensureAuthenticated(req, res, next) { 
    if (req.isAuthenticated()) { return next(); } 
    res.redirect('/login') 
} 

app.get('/server', ensureAuthenticated, routes.server.get); 
app.get('/login', routes.login.get); 

O come questa

app.all('*', function(req,res,next){ 
    if (req.params === '/' || req.params === '/login') 
    next(); 
    else 
    ensureAuthenticated(req,res,next); 
}); 
+7

Cristo, grazie a Dio 'isAuthenticated()' è * * Completamente non documentato **. È come l'intero punto della biblioteca. Un giorno troverò questo ragazzo di Jared Hanson, mando un drone con una grossa mano di gomma su di esso a casa sua, e lo colpisco ripetutamente per trollare il mondo con Passport. Grazie. –

+0

Amen! giusto amico, hehe! @JasonC –

2

È sufficiente fintanto che non si perde una rotta da qualche parte. Assicurati solo che i tuoi percorsi siano nell'ordine corretto.

//checks to be sure users are authenticated 
app.all("*", function(req, res, next){ 
    if (!req.user) 
    res.send(403); 
    else 
    next(); 
}); 
//additional routes will require authentication due to the order of middleware 
app.get("/admin", .... 

Tuttavia, se si è spostato il percorso di amministrazione sopra quello globale, il percorso di amministrazione non sarebbe più protetto. Si potrebbe desiderare di mettere in modo intenzionale la pagina di login in precedenza, quindi non richiede l'autenticazione, ad esempio.

2

una correzione per la risposta di user568109, con espresso 4 il codice deve essere simile a questo:

app.all('*', function(req,res,next) { 
    if (req.path === '/' || req.path === '/login') 
    next(); 
    else 
    ensureAuthenticated(req,res,next); 
});