2012-06-07 45 views
1

我在Ruby on Rails中完成了一個處理用戶身份驗證的站點。現在我在一個子文件夾下的同一個站點上有一個PHP應用程序,它檢索由RoR提供的JSON指定用戶角色的JSON。檢索JSON維護瀏覽器會話

現在,當我試圖從PHP中檢索JSON時,即使用戶登錄(我相信因爲瀏覽器會話未被維護),它始終會以'Guest'的形式檢索。我用它來檢索JSON的代碼是

$json_url = 'https://mysite.com.com/usertype'; 
$json_string = '[usertype]'; 
// Initializing curl 
$ch = curl_init($json_url); 
// Configuring curl options 
$options = array(
CURLOPT_RETURNTRANSFER => true, 
CURLOPT_HTTPHEADER => array('Content-type: application/json') , 
CURLOPT_POSTFIELDS => $json_string 
); 
// Setting curl options 
curl_setopt_array($ch, $options); 
// Getting results 
$result = curl_exec($ch); // Getting jSON result string 

現在是有什麼人能幫助我在哪裏我可以檢索JSON維護會話????

+0

的http://計算器。 com/questions/3097451/sharing-a-session-between-ruby-and-php – LeonardChallis

+0

這兩個應用程序位於同一個域中,不存在涉及的子域。那麼,有沒有更簡單的方法? – holyidiot

+0

該答案的第一部分不是域特定的,將工作 – LeonardChallis

回答

1

RoR將設置身份驗證Cookie。所以第一步是找出那個cookie的名字。默認名稱是「_myprojectname_session」,但可以在config/initializers/session_store.rb中更改(請參閱Accessing the "session key" cookie name from anywhere in Rails)。

查找cookie名稱的簡單方法是在瀏覽器中查看它(例如,使用此Chrome擴展名:http://code.google.com/p/editthiscookie/)。

一旦你找到了cookie的名稱(例如,「_myapp_session」),你需要的會話cookie從PHP請求複製到捲曲的選項,如下所示:

$options = array(
CURLOPT_COOKIE => "_myapp_session=" . $_COOKIE['_myapp_session'], 
CURLOPT_RETURNTRANSFER => true, 
CURLOPT_HTTPHEADER => array('Content-type: application/json') , 
CURLOPT_POSTFIELDS => $json_string 
); 
+0

我厭倦了它,它仍然顯示用戶,並在他實際登出時退出 – holyidiot

+0

我編輯了我的答案。我希望現在很清楚。 – Diego

+0

我試過你的方法,不幸的是,它仍然沒有正確讀取,猜測會話cookie沒有被正確讀取/設置... – holyidiot