如何检查Passport isAuthenticated on express.Router()

时间:2017-03-26 15:50:15

标签: node.js express passport.js

使用passport.js,检查用户isAuthenticated的推荐方法是什么?

我看到人们做这样的事情的例子:

app.get('/', isAuthenticated, function(req,res){});

这是如何工作的,app.get只接受两个参数?

当我使用express.Router()时呢?

router.get的正确语法是什么?

更一般地说,在每条路线上检查isAuthenticated似乎效率低下。有没有更好的方法来检查Express应用程序中的身份验证?

感谢。

1 个答案:

答案 0 :(得分:1)

app.get根据需要接受尽可能多的middlewares。根据{{​​3}}:

  

router.METHOD(路径,[回调,...]回调)

     

...

     

你可以提供多个回调,并且所有回调都是平等的,并且表现得像中间件一样,除了这些回调可能   调用next(' route')绕过剩余的路由回调。您   可以使用此机制在路线上执行前置条件然后通过   当没有理由继续时,控制到后续路线   路线匹配。

这是您的身份验证中间件功能的样子:

function isAuthenticated(req, res, next) {
  if(/*check authentification*/) {
    return next();
  }

  res.send('auth failed');
}

另一方面,passport.js documentation可以用作Express中间件。

app.post('/login',
  passport.authenticate('local'),
  function(req, res) {
    // If this function gets called, authentication was successful.
    // `req.user` contains the authenticated user.
    res.redirect('/users/' + req.user.username);
  });

验证请求就像调用passport.authenticate()并指定要使用的策略一样简单。必须先配置策略,然后才能在路径中使用它们。有关详细信息,请继续阅读provides a built-in function一章。