2016-09-10 5 views
-1

Ich bin neu mit NodeJs und ich befolge tatsächlich ein Tutorial darüber. Im Tutorial wurde ein Code verwendet: In einem verify.js die folgende Funktion geschrieben wurde Datei:Node.js Benutzerauthentifizierung

so
exports.verifyOrdinaryUser = function (req, res, next) { 
    // check header or url parameters or post parameters for token 
    var token = req.body.token || req.query.token || req.headers['x-access-token']; 

    // decode token 
    if (token) { 
     // verifies secret and checks exp 
     jwt.verify(token, config.secretKey, function (err, decoded) { 
      if (err) { 
       var err = new Error('You are not authenticated!'); 
       err.status = 401; 
       return next(err); 
      } else { 
       // if everything is good, save to request for use in other routes 
       req.decoded = decoded; 
       next(); 
      } 
     }); 
    } else { 
     // if there is no token 
     // return an error 
     var err = new Error('No token provided!'); 
     err.status = 403; 
     return next(err); 
    } 
}; 

und in einer anderen Datei wurde die Funktion aufgerufen:

/*****........****/ 
.post(verify.verifyOrdinaryUser, function(req, res, next){ 
    /******.......*****/ 

alles funktioniert ohne Problem. 1- Ich verstehe nicht, warum die Funktion verify.verifyOrdinaryUser nicht so genannt wird: nächste

verify.verifyOrdinaryUser(req, res, next) 

mit seinem Parameter (wie ist es möglich, dass wir eine Funktion ohne seine Parameter nennen

.? ich habe eine Funktion geschrieben:

exports.verifyAdmin = function(req, res, next){ 
    if(req.decoded._doc.admin == false){ 
     var err = new Error('You cannot access to this ressource!'); 
     err.status = 401; 
     return next(err); 
    } 
    else { 
     next(); 
    } 
}; 

in der gleichen Datei, um zu überprüfen, ob ein Benutzer ein Administrator ist oder nicht, ich habe diese Funktion nach der verifyOrdinaryUser Funktion aufzurufen, mein Problem ist, ich weiß nicht, wie kann ich das anrufen f mit oder ohne Parameter. Danke.

Antwort

1

1- Ich verstehe nicht, warum die Funktion verify.verifyOrdinaryUser ist nicht so genannt: verify.verifyOrdinaryUser (req, res, nächste)

In einfachen Worten ausgedrückt, Das ist, weil Express Pflege braucht Senden dieser Parameter an die angegebene Middleware anstelle von Ihnen hier

Und in Funktion verify.verifyOrdinaryUser, Die Funktion fordert für 3 Parameter req, res, next und es empfängt diese drei Parameter, wenn es für einen Parameter, der nicht verlangt exist, Dieser Parameterwert ist undefined.

mein Problem ist, ich weiß nicht, wie ich Aufruf dieser Funktion, mit oder ohne die Parameter zu machen.

nennen Sie es einfach wie

/*****........****/ 
.post(verify.verifyOrdinaryUser, verify.verifyAdmin, function(req, res, next){ 
    /******.......*****/ 

Und in den Funktionen Code können Sie für die Parameter anfordern Sie

exports.verifyAdmin = function(req, res){ 
    if(req.decoded._doc.admin == false){ 
    ... 

Hoffnung brauchen, das gibt Ihnen ein Gefühl auf, was los ist, Sie sollten google für Node JS Middlewares und einfache Tutorials basierend auf Node JS und Express.

Verwandte Themen