2017-10-27 2 views
3

Verwenden wir es nur in Middleware oder den Funktionen ohne Routen? Ich habe es in meiner Authentifizierungsdatei ...Warum verwenden wir die next() Funktion?

function ensureAuthenticated(req, res, next){ 
if(req.isAuthenticated()){ 
    return next(); 
    } else { 
    req.flash('error_msg' , 'Please login First...') 
    res.redirect('/users/login'); 
    } 
} 
+0

Hallo @Linux. Wenn diese oder eine andere Antwort Ihre Frage gelöst hat, können Sie sie durch Anklicken des Häkchens akzeptieren. Dies zeigt der breiteren Gemeinschaft, dass Sie eine Lösung gefunden haben und sowohl dem Antworter als auch Ihnen einen guten Ruf verschaffen. Es gibt keine Verpflichtung, dies zu tun, jedoch ist dies der Weg für die Gemeinschaft, die Antworten zu finden, die die Frage gelöst haben. – Nevertheless

Antwort

3

Sie führen es aus, um die nächste Middleware in der Pipe auszuführen. Wenn Sie es nicht manuell ausführen, übergeben Sie es wahrscheinlich an ein anderes Modul, das es für Sie ausführt. Andernfalls, wenn Sie next nicht ausführen, schneiden Sie die "Pipe" kurz, d. H. Ihre ist die letzte Middleware, die ausgeführt wird.

In Ihrem Fall ist es sinnvoll, next() zu rufen, wenn der Benutzer authentifiziert ist. Das übergibt das Steuerelement an die nächste Middleware. Es ist auch sinnvoll, next() nicht aufzurufen, wenn Sie bereits festgestellt haben, dass der Benutzer nicht authentifiziert ist, da in den meisten Fällen der Rest der Middleware in der "pipe" nicht ausgeführt werden soll.

Also ja, next() wird von Middleware oder Modulen verwendet, die von Middleware aufgerufen werden sollen.

Ich hoffe, dass Ihre Frage beantwortet.

3

Wenn Sie über Express-Framework hier sprechen - next Funktion ist nur ein Rückruf, der besagt, dass dieser bestimmte Middleware-Handler nächste Operation Express Middleware-Kette ausführen sollte. Wenn Sie einen Handler mit der Signatur someHandler(req, res, next) definieren und ihn unter app.use registrieren, wird er ein Teil dieser Kette. Im Wesentlichen ist es nur eine spezielle Callback-Funktion - ohne den Zweck der Funktion selbst - Route Controller, Authentifizierung, Body-Parser, etc.

Verwandte Themen