我继承了一个代码库,看起来他们在节点中运行中间件,具有以下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?!?
})
}
根据我目前对代码库的理解,这实际上是中间件链中的最后一个函数调用,所以我可以在底部添加一块中间件吗?
这听起来像是正确的想法吗?
只是为了澄清我想要做的事情:
答案 0 :(得分:0)
这似乎是使用护照authenticate
功能的“自定义回调”方法。如果您查看the documentation,您可以看到他们希望如何使用它。也就是说,我不知道第二个参数应该做什么(object
) - 它看起来像一个变量,但我没有看到它在任何地方定义,我不确定{ {1}}方法以这种方式接受参数。此外,自定义回调有三个参数:authenticate
,err
和然后 user
...这可能会让你失望。
好的,现在你的实际问题是“我可以在底部添加一块中间件吗?”有点?事实是,那时你正处于路由中间件中。如果匹配并且auth成功,那么您应该为该路由执行任何代码 自定义回调。这就是这种做事方式的重点。或者,您可以使用info
作为中间件本身(它返回一个可在CommonJS模式中使用的中间件函数。
如果您不想更改代码,那么您可以这样做:
passport.authenticate