open_id_authentication - “OpenIdAuthentication.store为nil。使用内存存储。”问题

时间:2010-04-21 14:08:46

标签: ruby-on-rails ruby authentication openid

我正在尝试使open_id_authentication插件正常工作 最初是使用authlogic进行的,但是放弃了,因为感觉更麻烦了。

问题是我在日志中收到OpenIdAuthentication.store is nil. Using in-memory store.警告,导致无法正确验证用户。

以下是日志摘要:

Processing UserSessionsController#create (for 127.0.0.1 at 2010-04-21 23:58:38) [POST]
  Parameters: {"commit"=>"Sign in", "authenticity_token"=>"MSPc+VMgsQZ/w7vsb2OiE0azsF1QmphZqfnS6cPRD/U=", "openid_identifier"=>"http://myopenid.com"}
Completed in 12ms (View: 1, DB: 0) | 401 Unauthorized [http://localhost/user_session]
Generated checkid_setup request to http://www.myopenid.com/server with assocication {HMAC-SHA1}{4bcf0490}{MN9AXg==}
OpenIdAuthentication.store is nil. Using in-memory store.
Error attempting to use stored discovery information: OpenID::TypeURIMismatch
Attempting discovery to verify endpoint
Performing discovery on http://xxx.myopenid.com/
Using 'check_authentication' with http://www.myopenid.com/server

我不确定要解决此问题需要做些什么。可能将存储设置为数据库(我有OpenID迁移)。还不确定我是否真的需要数据库来执行OpenID身份验证。

原始项目(分支)是here,因此您可以仔细查看。

对此表示赞赏。

谢谢,
德米特里。

1 个答案:

答案 0 :(得分:3)

我遇到了与最新的open_id插件和内存存储类似的问题。一些OpenID站点可以工作,但大多数不会。 MemoryStore中的某些东西打破了如何进行身份验证。切换到使用文件存储对我来说很好。

我在里面创建了一个名为config/initializers/openid.rb的初始值设定项:

OpenIdAuthentication.store = :file

重新启动了应用,我尝试的每个openId网址都开始工作。

为什么文件存储在内存存储不工作时有效,我无法回答。我知道这对我来说已经解决了。