在护照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文件。