1

我正在尝试调试一个问题,即当 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 执行任何获取或设置请求。

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

4

1 回答 1

0

这是我发现的一种方法,但我确信有更好的方法......

module Rack
  class OpenID
    def initialize(app, store = nil)
      @app = app
      @store = ::OpenID::Store::Memcache.new(OpenIDMemcachedManager.new('...'))
    end
  end
end
于 2013-04-20T00:49:15.480 回答