如何在经典 sinatra 应用程序中配置omniauth 使用memcached 作为谷歌的后备存储?
Posted
技术标签:
【中文标题】如何在经典 sinatra 应用程序中配置omniauth 使用memcached 作为谷歌的后备存储?【英文标题】:How do I configure omniauth use memcached as a backing store with google in classic sinatra app? 【发布时间】: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 的正确方法吗?
【问题讨论】:
【参考方案1】:这是我发现的一种可行的方法,但我相信还有更好的方法...
module Rack
class OpenID
def initialize(app, store = nil)
@app = app
@store = ::OpenID::Store::Memcache.new(OpenIDMemcachedManager.new('...'))
end
end
end
【讨论】:
以上是关于如何在经典 sinatra 应用程序中配置omniauth 使用memcached 作为谷歌的后备存储?的主要内容,如果未能解决你的问题,请参考以下文章