RAILS / DEVISE – 设置一个设计cookie以在不同的子域中保持不变

我使用devise进行身份validation,并希望以下工作:

  1. 用户登录[ http://mydomain.com] 。
  2. 用户通过[ https://secure.mydomain.com]付款
  3. 用户返回[ http://mydomain.com/action]继续使用系统

我正在关注本教程: http : //clearcove.ca/blog/2010/11/how-to-secure-a-rails-app-on-heroku-with-ssl-firesheep/

但我正处于需要让Devise做authlogic在这里做的部分。 救命!! ;)

我可能会迟到一点,但对于那些outlook未来的人来说,这是一个相当简单的解决方案。 将其添加到您环境的配置文件中:

Rails3App::Application.config.session_store :cookie_store, :key => '_rails3_app_session', :domain => :all # change "Rails3App" to the name of your rails app. 

其中重要的部分是:domain =>:all,因为它告诉Rails也允许子域。 其他人建议使用:domain =>“。mydomain.com”,但是:domain =>:all完成工作,不要求你输入你的域名。

注意:如果在重新启动服务器时它不起作用,则初始化程序/文件夹中可能有一个覆盖它的session_store.rb文件。 只需更改该文件中的行,或删除该文件并将其移动到您的配置中。

此外,我必须专门将该行放在我的production.rb文件中,因为在session_store.rb文件中更改它会破坏我的会话以进行开发(使用IP地址)。

附录:如果它仍然不起作用,虽然你很确定你删除了旧的cookie, 重命名cookie的密钥 – 只是为了确保。 (经过几个小时的故障排除后,这就是我真正需要做的就是让它工作。)