【问题标题】:Using Everyauth/Express and Multiple Configurations?使用 Everyauth/Express 和多种配置?
【发布时间】:2012-06-25 14:19:48
【问题描述】:

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

我试图解决的问题是 Everyauth 似乎是“配置并忘记”。我设置了一个everyauth 对象并将其配置为express 的中间件,然后就忘了它。例如,如果我想创建一个移动 Facebook 登录,我会这样做:

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 中间件之前起作用以配置everyauth 对象,以便everyauth 随后使用正确的appId/appSecret/mobile 参数。我不知道该怎么做...

建议?

这是我迄今为止最好的想法,虽然它看起来很糟糕: 为每个可能的配置创建一个everyauth对象,为每个配置使用不同的entryPath...

【问题讨论】:

    标签: facebook node.js express everyauth


    【解决方案1】:

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

    var configureEveryauth = function()
    {
        return function configure(req, res, next) {
            // make some changes to the everyauth object as needed....          
            next();
        };
    }
    

    现在我的设置变成了:

    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);
    

    请注意,我什至不会在启动期间完全配置everyauth Facebook 对象,因为我知道中间件会填充缺失的参数。

    【讨论】:

    • 如何将所有的everyauth 代码放到另一个文件中并在我们的中间件中使用? app.use(function (req, res, next) { require('./auth/facebook').init(req, res, next); }); facebook 文件将与everyauth 相关。 findOrCreateUser , return promise 等等...
    猜你喜欢
    • 2012-05-10
    • 2013-11-05
    • 2013-01-20
    • 2012-11-28
    • 2014-09-11
    • 1970-01-01
    • 2017-02-15
    • 2015-10-16
    • 1970-01-01
    相关资源
    最近更新 更多