nodeJS code pattern => Express中间件/ Oauth2 / Passport

时间:2016-07-17 15:37:25

标签: node.js express oauth-2.0 passport.js jwt

我继承了一个代码库,看起来他们在节点中运行中间件,具有以下Oauth2护照策略模式

module.exports = function (router) {
   router.get('/', function (req, res, next) {
       passport.authenticate('type', object, function(err, info) {

             //pass info object to next middleware

  })(req,res,next) <---where does this go?!?
})
}

根据我目前对代码库的理解,这实际上是中间件链中的最后一个函数调用,所以我可以在底部添加一块中间件吗?

这听起来像是正确的想法吗?

只是为了澄清我想要做的事情:

  1. 将Oauth回调中的数据通过中间件函数传递给req
  2. 执行数据库业务逻辑(创建或查找帐户)
  3. 使用JWT登录
  4. 重定向

1 个答案:

答案 0 :(得分:0)

这似乎是使用护照authenticate功能的“自定义回调”方法。如果您查看the documentation,您可以看到他们希望如何使用它。也就是说,我不知道第二个参数应该做什么(object) - 它看起来像一个变量,但我没有看到它在任何地方定义,我不确定{ {1}}方法以这种方式接受参数。此外,自定义回调有三个参数:authenticateerr然后 user ...这可能会让你失望。

好的,现在你的实际问题是“我可以在底部添加一块中间件吗?”有点?事实是,那时你正处于路由中间件中。如果匹配并且auth成功,那么您应该为该路由执行任何代码 自定义回调。这就是这种做事方式的重点。或者,您可以使用info作为中间件本身(它返回一个可在CommonJS模式中使用的中间件函数。

如果您不想更改代码,那么您可以这样做:

passport.authenticate