2017-05-11 1 views
-1

私はノードjsを初めて使用しています。私はjwtを使って認証を理解していました。私が知っている通りExpressのリクエストハンドラは、以下に私がして混乱していスニペットがあるこの
関数ハンドリング・ルートが3つ以上のパラメータを取ることはどのように可能ですか?

app.post('/login',function(req,res){...}); 

のようなものです。

app.js

var userController = require('./Controllers/user'); 
var authController = require('./Controllers/auth'); 
var tokenController = require('./Controllers/validate'); 
var deviceController = require('./Controllers/device'); 

app.post('/login',userController.validate,authController.authorize,userController.login); 

我々は慎重に見てみると、この方法を掲示する4つのパラメータがあります。 誰でも下の機能がどのように機能するのか説明できますか?

app.post('/login',userController.validate,authController.authorize,userController.login); 



はまた、開発者が

user.jsの

exports.validate = function(req,res,next) { 
    if(req.body.email === undefined){ 
     return res.status(401).send({'message':'Email is required'}); 
    } 

    if(req.body.password === undefined){ 
     return res.status(401).send({'message':'Password is required'}); 
    } 

    next(); 
}; 

const login = exports.login = function (req,res){ 
    User.findOne({email:req.body.email},function(err, user){ 
     if(err){ 
      return res.status(401).send(err); 
     } 
     user.token = jwt.sign(user.password, 'TOPSECRETTTT'); 
     user.save(function (err,user) { 
      if (err) { 
       res.send(err); 
       return; 
      } 
      res.status(200).send({email:user.email,loginToken:user.token}); 
     }) 
    }); 
}; 

auth.js

passport.use(new LocalStrategy({ 
     usernameField: 'email', 
     passwordField: 'password' 
    }, 
    (function(username, password, callback) { 
     User.findOne({ email: username }, function(err, user) { 
      if (err) { 
       return callback(err); 
      } 

      if (!user) { 
       return callback(null, false); 
      } 

      user.matchPassword(password, function(err, isMatch) { 
       if (err) { 
        return callback(err); 
       } 

       if (!isMatch) { 
        return callback(null, false); 
       } 

       return callback(null, user); 
      }); 
     }); 
    }))); 

exports.authorize = passport.authenticate('local', { session: false }); 
をインポートされたJSファイルを追加します

このような実装を見つけることができるソース/リンクがあるかどうかを教えてください。

コメントで述べたように
+1

ミドルウェアに関するすべてを紹介しています。http://expressjs.com/en/guide/using-middleware.html –

答えて

0

、特急はすべてのミドルウェアについてです - それはルートに一致した場合、それはこの場合res.send()

に到達するまで、それはあなたのミドルウェアがPOSTデータを検証ために、これらのミドルウェア機能を通して行きますよユーザーを作成し、認証し、認証トークンを返します。各ミドルウェアはnext();を使用してチェーン内の次のミドルウェアに進み、いずれかの時点で障害が発生した場合は対応する失敗した応答をres.send()に送信し、ステータスコードは不良です。この場合は401 Unauthorizedです。

関連する問題