我在node.js之上使用Hapi作为 api 框架。我还使用护照进行会话管理和身份验证。
我正在努力寻找一种方法来分离这些不同组件的逻辑。现在,我的大多数请求处理程序都有一个单独的文件——我想从主应用程序文件中获取所有处理逻辑。阻碍我的是一些处理程序对护照的依赖。
有问题的初始化代码:
//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,我不确定如何访问处理程序文件中的 Passport 变量。
取决于护照的示例路线:
{ 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"});
}); }}}
我想真正的问题是在不同文件中获取对护照变量的引用的最佳方法是什么?
非常感谢。
更新:这是 pre v8 api 代码,注册方式已更改。