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

时间:2011-01-28 09:33:54

标签: ruby-on-rails devise

我使用设计进行身份验证,并希望以下工作:

  1. 用户登录[http://mydomain.com]
  2. 用户通过[https://secure.mydomain.com]
  3. 付款
  4. 用户返回[http://mydomain.com/action]继续使用系统
  5. 我正在关注本教程:http://clearcove.ca/blog/2010/11/how-to-secure-a-rails-app-on-heroku-with-ssl-firesheep/

    但是我需要让Devise做authlogic在这里做的事情。救命!! ;)

2 个答案:

答案 0 :(得分:21)

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

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 => :所有工作都可以,并且不要求您输入您的域名。

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

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

答案 1 :(得分:7)

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