gpt4 book ai didi

ruby-on-rails-3 - OmniAuth - OpenID 回调中未加载当前 session

转载 作者:行者123 更新时间:2023-12-03 00:50:46 28 4
gpt4 key购买 nike

我将 OmniAuth 与 Rails 3.1.4 结合使用,并尝试允许已通过身份验证的用户将多个 OpenID 提供商与其帐户关联。

作为未经身份验证的用户,使用 OpenID 登录可以正常工作。作为经过身份验证的用户,当我尝试使用不同的 oid 提供程序登录时,执行回调方法时,看起来我之前没有经过身份验证。

对我来说, Controller 看起来像是在 session 初始化之前执行的(或者 session 被完全跳过)。

可能是什么?

最佳答案

确认Andrei Serdeliuc的解决方案,禁用protect_from_forgery对我有用(Ruby 1.8.7,Rails 2.3.11,OmniAuth 0.1.6)

在你的CallbackController中(著名的截屏视频中的AuthenticationsController)在 Controller 顶部添加 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.

现在我的 session 不再重置,并且可以向我的 curren_user 添加多个 openid 身份验证。

干杯

关于ruby-on-rails-3 - OmniAuth - OpenID 回调中未加载当前 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5049994/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com