2016-12-27 37 views
0

所以(對於「/破折號」)我路線是這樣的:使用護照本地及智威湯遜戰略上相同的應用程序(在同一路線)

// validating using JWT 
router.post('/dash', passport.authenticate('jwt', {session: false}), function (req, res) { 
    res.json({'success': true}); 
}); 

// validating using LOCAL 
router.post('/dash', authenticationHelpers.isAuth, function (req, res) { 
    res.json({'success': true}); 
}); 

// authenticationHelpers.isAuth 
function isAuth(req, res, next) { 
    if (req.isAuthenticated()) 
     return next(); 
    res.status(401).json({"authenticated": false}); 
} 

那麼,我該如何使用這兩種本地& JWT戰略在相同的應用程序(在相同的路線)?我如何將它們結合起來。

注:本地的Web應用程序,智威湯遜移動應用

回答

1

終於想通了。

修改isAuth功能:

function isAuth(req, res, next) { 
    if (req.headers.authorization) { 
     passport.authenticate('jwt', {session: false}, function (err, user, info) { 
      if ((!err || !info) && user) { 
       req.user = user; 
       return next(); 
      } 
      res.status(401).json({authenticated: false, message: "Login expired."}); 
     })(req, res, next); 
    } else { 
     if (req.isAuthenticated()) 
      return next(); 
     res.status(401).json({authenticated: false}); 
    } 
} 

建議,歡迎...

相關問題