我在Ruby on Rails上完成了一个处理用户身份验证的站点。现在我在一个子文件夹下的同一站点中有一个PHP应用程序,它检索由RoR指定用户角色提供的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 :(得分: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请求复制到CURL选项,如下所示:
$options = array(
CURLOPT_COOKIE => "_myapp_session=" . $_COOKIE['_myapp_session'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array('Content-type: application/json') ,
CURLOPT_POSTFIELDS => $json_string
);