如何在经典的sinatra应用程序中使用google配置omniauth使用memcached作为后备存储?

时间:2013-04-19 23:52:01

标签: oauth sinatra omniauth

我正在尝试调试在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做任何获取或设置请求。

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

1 个答案:

答案 0 :(得分:0)

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

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