2009-12-17 83 views
0

我正在使用基于默认Cookie的会话存储。基本上,我使用的是heroku,我需要从我的应用程序:http://test1.myapp.com转到heroku一页:http://myapp.heroku.com/billing - 所以我需要访问会话,当我去heroku网址。我想访问heroku页面上的session [:user_id],但是何时进入heroku页面会生成一个新的会话。按会话ID访问导轨会话信息

我在想我可以在querystring的主要URL上传递session_id,但我不知道如何从heroku url页面访问它。

我尝试这样做:

session[params[:sid]][:user_id] 

,但它不工作。如果您知道会话ID,是否可以访问会话信息?或者有另一种方式来从另一个网址读取会话信息(但都在同一个应用程序中)?

谢谢。

+0

您使用的是基于cookie的会话还是数据库支持的会话?使用基于cookie的会话可能不可能,但是如果您使用的是ActiveRecord会话存储,您应该能够从数据库获取会话,并给定其ID并解组内容。 – 2009-12-17 22:21:16

+0

我正在使用基于cookie的会话。 – 2009-12-17 22:23:25

回答

0

为了让它起作用,您需要在Heroku中设置您的域名,以便Heroku应用程序在主应用程序的同一顶级域名下运行。要做到这一点,您的域名添加到您的帐单的应用,像这样:

$ heroku domains:add billing.myapp.com 

请务必遵循Heroku's instructions设置您的DNS。

您的账单应用程序将在http://billing.myapp.com/billing(位于Heroku)上。这样,控制器应该能够访问相同的会话和cookie。

一定要设置在环境/ production.rb在这两个应用会话域:

config.action_controller.session = { :domain => ".myapp.com" } 

我还要提到的是,你可能会考虑使用某种共享的验证或应用程序之间的令牌认证的,因为cookie可能会被黑客入侵或以其他方式泄露。