2009-12-17 86 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可能會被黑客入侵或以其他方式泄露。