首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Everyauth/Express和多种配置?

使用Everyauth/Express和多种配置?
EN

Stack Overflow用户
提问于 2012-06-23 15:00:08
回答 1查看 1.1K关注 0票数 4

我正在成功地使用Node.js + Express + Everyauth ( https://github.com/abelmartin/Express-And-Everyauth/blob/master/app.js )从我的应用程序登录到Facebook、Twitter等。

我正试图解决的问题是,Everyauth似乎是“配置和遗忘”。我设置了一个单一的everyauth对象,并将其配置为作为express的中间件,然后将其置之不理。例如,如果我想创建一个移动Facebook登录,我需要:

代码语言:javascript
运行
复制
var app = express.createServer();
everyauth.facebook
      .appId('AAAA')
      .appSecret('BBBB')
      .entryPath('/login/facebook')
      .callbackPath('/callback/facebook')
      .mobile(true);     // mobile!
app.use(everyauth.middleware());
everyauth.helpExpress(app);
app.listen(8000);

问题是:移动客户端和非移动客户端都将连接到我的服务器,在连接完成之前,我不知道哪一个正在连接。更糟糕的是,我需要支持多个Facebook应用程序ID(同样,在客户端连接并部分解析输入之前,我不知道要使用哪个应用程序ID)。因为每个人都是一个单例,所以我看不出如何根据发出的请求对配置进行这些更改。

看起来,我需要创建某种中间件,在everyauth中间件之前进行操作,以配置everyauth对象,这样每个人随后都会使用正确的appId/appSecret/mobile参数。我不知道该怎么做。

有什么建议吗?

到目前为止,我有一个最好的主意,尽管看起来很糟糕:为每个可能的配置创建一个everyauth对象,为每个配置使用一个不同的entryPath。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-23 15:11:48

显然,我在早上喝咖啡之前就写了这篇文章,因为我回答了我自己的问题,而且很容易实现。基本上,我只需要创建我自己的自定义快速中间件来切换每个人的配置,然后每个人都得到它的肮脏的爪子对请求,所以..。

代码语言:javascript
运行
复制
var configureEveryauth = function()
{
    return function configure(req, res, next) {
        // make some changes to the everyauth object as needed....          
        next();
    };
}

现在我的设置变成:

代码语言:javascript
运行
复制
var app = express.createServer();
everyauth.facebook
  .entryPath('/login/facebook')
  .callbackPath('/callback/facebook');
app.use(configureEveryauth());
app.use(everyauth.middleware());
everyauth.helpExpress(app);
app.listen(8000);

请注意,在启动期间,我甚至不需要完全配置所有的Facebook对象,因为我知道中间件会填充丢失的params。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11170506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档