2013-07-19 6 views

Antwort

18

Sie können req.isAuthenticated() verwenden, um zu überprüfen, ob die Anfrage authentifiziert ist oder nicht.

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); 

Oder wie dieser

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

Christus, Gott sei Dank 'IsAuthenticated()' ist * * völlig undokumentiert **. Es ist wie der ganze Punkt der Bibliothek. Eines Tages werde ich diesen Jared Hanson Typen finden, eine Drohne mit einer großen Gummihand auf sein Haus schicken und ihn immer wieder schlagen, um mit Passport die Welt zu erkunden. Vielen Dank. –

+0

Amen! direkt auf Kumpel hehe! @JasonC –

2

Es ist genug, solange Sie nicht irgendwo eine Route lecken. Stellen Sie nur sicher, dass Ihre Routen in der richtigen Reihenfolge sind.

//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", .... 

Wenn Sie jedoch die Admin-Route über dem globalen ein, die Admin-Route geschützt werden nicht mehr bewegt würde. Möglicherweise möchten Sie Ihre Anmeldeseite früher setzen, damit sie beispielsweise keine Authentifizierung erfordert.

2

eine Korrektur für die Antwort von user568109 mit Express 4 der Code wie folgt sein:

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