And*_*c ॐ 8 omniauth ruby-on-rails-3
我正在使用OmniAuth和Rails 3.1.4,我试图允许已经过身份验证的用户将多个OpenID提供商与他们的帐户相关联.
作为未经身份验证的用户,使用OpenID登录工作正常.作为经过身份验证的用户,当我尝试使用其他oid提供程序登录时,执行回调方法时,它看起来就像我之前未经过身份验证一样.
对我而言,看起来控制器在会话初始化之前执行(或者会话被完全跳过).
会是什么呢?
Elm*_*tou 13
确认Andrei Serdeliuc的解决方案,禁用protect_from_forgery为我工作(Ruby 1.8.7,Rails 2.3.11,OmniAuth 0.1.6)
在你的CallbackController(着名的截屏视频中的AuthenticationsController)添加 skip_before_filter :verify_authenticity_token 或 protect_from_forgery :except => :create在控制器顶部工作!
因为它可能是CSRF(跨站点请求伪造)的一种方式,您应该验证openid服务器的身份,不要忘记设置证书验证(在初始化程序中):
# First of all get a ca-bundle.crt file (eg : from your open-source browser package)
require "openid/fetchers"
OpenID.fetcher.ca_file = "#{Rails.root}/config/ca-bundle.crt""
它会阻止警告:
WARNING: making https request to https://www.google.com/accounts/o8/id without verifying server certificate; no CA path was specified.
现在我的会话不再重置,并且可以向我的curren_user添加几个openid身份验证.
干杯
| 归档时间: |
|
| 查看次数: |
2662 次 |
| 最近记录: |