2010-12-15 69 views
2

我刚刚在secure.mydomain.com上添加了SSL。当有人登录时,他们会从主(www)子域的表单发布到安全子域。这会导致生成InvalidAuthenticityToken错误。使用Rails应用程序登录时子域之间的InvalidAuthenticityToken

我读过,有必要跨子域共享会话数据。为此,我已经添加了:

config.action_controller.session = { :domain => '.mydomain.com' } 

to config/environments/production.rb。不幸的是,这并没有解决问题。

感谢您的帮助!

回答

3

Rails 3中,如果这是你使用的是什么,希望你做出这种变化config/initializers/session_store.rb

Rails.application.config.session_store :cookie_store, { 
    :key => '[my key]', 
    :domain => '.example.com' 
} 

给一个去。如果事情仍然无法正常工作,请检查浏览器中的Cookie,看它是否有任何特殊的域设置。这将有助于缩小它是否设置或获取这是个问题:/

+0

工作。谢谢。 – Michael 2010-12-16 05:23:39

+1

对于不同环境的不同域名,比如''lvh.me' for'development',你可以使用类似下面的内容:'域名:{'example.com', }, development:'.example.dev' } .fetch(Rails.env.to_sym,:all)' – 2015-09-24 02:30:26

0

你最近做了这个改变?您的浏览器仍可能有旧的Cookie,在您注意到行为发生变化之前需要将其删除。

就肆意它在那里:)

+0

我清除了饼干... – Michael 2010-12-16 00:24:50

+0

我错过正确设置域选项? Heroku,但不是webrick,告诉我它已经被弃用了。 – Michael 2010-12-16 00:26:27

+0

@迈克尔:这是什么版本的Rails? – Matchu 2010-12-16 00:51:35

0

我觉得这条线在你的应用程序布局

<%= csrf_meta_tags %>