我正在尝试使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,因此您可以仔细查看。
对此表示赞赏。
谢谢,
德米特里。
答案 0 :(得分:3)
我遇到了与最新的open_id插件和内存存储类似的问题。一些OpenID站点可以工作,但大多数不会。 MemoryStore中的某些东西打破了如何进行身份验证。切换到使用文件存储对我来说很好。
我在里面创建了一个名为config/initializers/openid.rb
的初始值设定项:
OpenIdAuthentication.store = :file
重新启动了应用,我尝试的每个openId网址都开始工作。
为什么文件存储在内存存储不工作时有效,我无法回答。我知道这对我来说已经解决了。