gpt4 book ai didi

node.js - 带有 Passport 的 nodejs/hapi 应用程序中的模块化

转载 作者:搜寻专家 更新时间:2023-10-31 23:21:52 25 4
gpt4 key购买 nike

我正在使用 Hapi 作为 node.js 之上的 api 框架。我还使用 passport 进行 session 管理和身份验证。

我正在努力寻找一种方法来分离这些不同组件的逻辑。现在我的大部分请求处理程序都有一个单独的文件 - 我想从主应用程序文件中获取所有处理逻辑。让我退缩的是一些处理人员对 Passport 的依赖。

有问题的初始化代码:

//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 变量。

示例路线取决于 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"});
}); }}}

我想真正的问题是在不同的文件中获取对 passport 变量的引用的最佳方法是什么?

非常感谢。

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

最佳答案

我最近处理了同样的问题。事实证明,传递给每个处理程序的 request 对象都引用了 passport 插件。我不记得 Passport 的确切含义,但它是这样的:

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

花一些时间探索 request 对象,我发现许多答案都附加到该对象上。例如,如果某人使用 Travelogue 和 Passport 正确登录,您可以在 request.user 上找到他们的用户配置文件。

关于node.js - 带有 Passport 的 nodejs/hapi 应用程序中的模块化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21411941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com