【问题标题】:How do I configure omniauth use memcached as a backing store with google in classic sinatra app?如何在经典 sinatra 应用程序中配置omniauth 使用memcached 作为谷歌的后备存储?
【发布时间】:2013-04-13 11:04:21
【问题描述】:

我正在尝试调试当 EC2 ELB 后面有多个应用服务器时使用 Google 执行 oauth 失败的问题。我认为该问题与未共享 oauth 后备存储这一事实有关。我们采用的解决方案运行了 2 年多,然后在 2 天前突然开始失败,我不知道这是我的配置问题还是谷歌改变了一些东西。

我认为要解决问题,我必须使用共享存储,例如 memcached。

这是我在经典风格的 sinatra 应用中尝试这样做的:

Sinatra::Application.use ::OmniAuth::Strategies::OpenID do
  OpenID::Store::Memcache.new(Memcached.new('my_memcached_machine'))
end

不幸的是,这仍然没有解决问题。据我所知,OmniAuth 从未对 memcached 执行任何 get 或 set 请求。

在经典风格的 sinatra 应用程序中尝试向 google 进行身份验证时,这是让 omniauth 使用 memcached 的正确方法吗?

【问题讨论】:

    标签: oauth sinatra omniauth


    【解决方案1】:

    这是我发现的一种可行的方法,但我相信还有更好的方法...

    module Rack
      class OpenID
        def initialize(app, store = nil)
          @app = app
          @store = ::OpenID::Store::Memcache.new(OpenIDMemcachedManager.new('...'))
        end
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2012-04-09
      • 1970-01-01
      • 2020-02-05
      • 2012-01-15
      • 1970-01-01
      • 2012-10-29
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多