在护照nodejs / hapi应用程序模块化

我使用Hapi作为node.js之上的api框架。 我也使用护照进行会话pipe理和身份validation。

我正在努力寻找一种方法来分离出这些不同组件的逻辑。 现在,我的大部分请求处理程序都有一个单独的文件,我想从主应用程序文件中获取所有处理逻辑。 有什么阻止我是护照的一些处理程序的依赖。

有问题的init代码:

//init server var server = new Hapi.Server(config.hostname, config.port); server.pack.allow({ ext: true }).require(plugins, function (err) { if (err) { throw err; } }); //setup auth var Passport = server.plugins.travelogue.passport; Passport.use(new LocalStrategy( handlers.authUser ) ); 

虽然大多数路由是在一个单独的文件中定义的(类似于{ method: 'POST', path: '/logout', handler: handlers.logout} )问题是有几条路由取决于Passport, m不知道如何获得处理程序文件中的Passportvariables。

取决于护照的示例路线:

 { method: 'POST', path: '/login', config: { handler: function (request, reply) { Passport.authenticate('local')(request, function (err) { console.log("successful authentication?"); if (err && err.isBoom) {} reply({message: "logged in"}); }); }}} 

我想真正的问题是在不同的文件中获得对护照variables的引用的最佳方式是什么?

非常感谢。

更新 :这是v8之前的api代码,注册的方式已经改变了。

我最近处理了同样的问题。 发现传递给每个处理程序的request对象具有对护照插件的引用。 我不记得Passport究竟是什么,但它是这样的:

 // ... handler: function(request, reply) { var passport = request.server.plugins.passport; } 

花一些时间来探索request对象,我发现许多附加到该对象的答案。 例如,如果有人使用Travelogue和Passport正确login,则可以在request.user上find他们的用户configuration文件。