使用Passport路由文件问题

时间:2013-03-15 23:02:34

标签: node.js authentication express routes passport.js

我正在使用NodeJS,Express和PassportJS来构建Web应用程序。我遇到了一条我无法理解的路线问题。当我有:

...
app.get('/auth/facebook', passport.authenticate('facebook'));
...

一切似乎都很好。但是,当我改变为:

...
app.get('/auth/facebook',
  function(req, res) {
    passport.authenticate('facebook');
  });
...
它挂了吗?我在app.get函数上遗漏了什么吗?我希望能够这样做,因为我想让路径更加动态,我确定了护照的身份验证。例如:

...
app.get('/auth/:provider',
  function(req, res) {
    passport.authenticate(req.params.provider);
  });
...

提供商可以是facebooktwittergoogle ......

1 个答案:

答案 0 :(得分:7)

passport.authenticate是中间件,请从源头上看一眼:https://github.com/jaredhanson/passport/blob/master/lib/passport/middleware/authenticate.js

passport.authenticate('facebook')返回一个函数,该函数接收来自express的req,res,next参数并处理它们。

这样:

app.get('/auth/:provider',
  function(req, res, next) {
    passport.authenticate(req.params.provider)(req, res, next);
  });

是你需要的。