上下文:带有authlogic的rails应用程序,用于sigup和登录 设置信息:Rails 2.3.2
一个名为posts的控制器,其中包含一个动作'show'。 登录后,我会显示帖子/索引页面。
当用户点击某个项目时,会显示该项目的详细信息。相当标准的东西。
所有这些在开发和生产(Apache与Ubuntu和mysql上的Passenger 2.2.5)上工作正常和花花公子除了一个案例中的以下问题:
问题: 仅适用于Firefox / Safari / Chrome(IE7正常)且仅限于PRODUCTION,
当用户在新会话中第一次登录时 (打开新的浏览器,输入url),索引页面显示正常 当点击一个项目时,用户会神秘地记录下来 (current_user返回null)。
当您再次登录时,一切都恢复正常 - 您可以注销并登录任意次数而没有问题 - 直到您关闭浏览器并重新开始。
除了'show'之外的任何其他操作都保留了current_user并且工作正常。
问题: 用户会话如何在这样的通话中丢失 帖子/ ID只有一次 - 第一次? show动作没有做任何特别的事。
我已使用ActiveRecord Store和Cookie进行会话管理,但行为相同。
任何人都有任何线索,非常感谢!
答案 0 :(得分:3)
可能会发生这种情况,因为用户正在从以下位置重定向: http://yoursite.com至http://www.yoursite.com
这是一个提到这个问题的博客: http://garrickvanburen.com/archive/rails-cookie-settings-for-cross-subdomain-sessions
解释博客:
修复是设置:
config.action_controller.session[:domain] = '.YOURDOMAIN.COM'
在environment.rb中(确保在前面添加.
)。这将使cookie适用于www.yourdomain.com和yourdomain.com(以及任何其他子域)。
这里还讨论了这种技术: Losing session in rails 2.3.2 app using subdomain