【发布时间】:2011-06-30 20:40:13
【问题描述】:
您可以在 SO 上看到此错误:
Nil object error when using OmniAuth (which normally works)
OmniAuth / Rails - You have a nil object when you didn't expect it
我的 OmniAuth 策略也有同样的问题。我自己写了,并在 Rails 和 Sinatra 上本地测试过。两个实例都返回相同的错误,而 Sinatra 会显示更多有用的信息。
“你没想到有一个 nil 对象!
您可能期望 ActiveRecord::Base 的实例。
评估 nil 时发生错误。[]="
看起来在幕后发生了一些我不理解的 Rack 事情。 Sinatra 在跟踪中的最后一条评论是:
“../lib/rack/utils.rb 在 set_cookie_header 中!”在第 194 行:
case header["Set-Cookie"]
不过,我不会弄乱 cookie。对于某些人来说,这个问题似乎是随机消失的,或者做一些简单的事情,比如清除缓存对某人有用。这些技术都不适合我。有谁知道解决这个问题的可靠方法?您可以在此处查看该项目的 repo:https://github.com/stevenhaddox/oa-casport 谢谢!
编辑:经过深思熟虑,我猜 OmniAuth 不喜欢我的 Rack 中间件未配置 SSL 的事实。有没有办法告诉 OmniAuth 不要期待 SSL?
【问题讨论】:
-
我在这里设置了这个问题的一个实例:slkdemos.com:4567/auth/casport