设置包含子域的session_store会干扰Twitter登录。为什么?

时间:2013-01-18 13:50:44

标签: ruby-on-rails ruby-on-rails-3 twitter omniauth sorcery

在开发环境中。 Twitter API要求我们从0.0.0.0而不是localhost或任何其他主机名登录。

但是,我们也通过子域测试我们的本地应用程序。在session_store.rb

Foobar::Application.config.session_store :redis_store, :servers => REDISTOGO_URL, :key_prefix => "foobar:rails:session", :expire_in => 1.week, :domain => '.localhost.dev'

每次我们尝试登录Twitter时,都会得到401 Unauthorized。如果我们设置:domain => '0.0.0.0',我可以登录到Twitter。具有:

Foobar::Application.config.session_store :redis_store, :servers => REDISTOGO_URL, :key_prefix => "foobar:rails:session", :expire_in => 1.week

如果没有:domain =>部分,我可以毫无问题地登录Twitter。

为什么在:domain中设置session_store.rb会干扰Twitter登录?

1 个答案:

答案 0 :(得分:0)

会话存储集上的:domain选项是将为其颁发会话ID cookie的域。当cookie的域设置和当前url的主机名匹配时,浏览器只会将cookie发送回应用程序。

在您的设置中设置:domain => '.localhost.dev'意味着您必须使用http://localhost.dev访问您的网站,或者它的子域(http://www.localhost.dev)也可以。通过http://0.0.0.0访问您的应用程序时,由于主机名不匹配,您将无法取得任何成功。

相关问题