1

我有一个用 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 吗????

4

1 回答 1

1

RoR 将设置一个身份验证 cookie。所以第一步是找出那个cookie名称。默认名称是“_myprojectname_session”,但可以更改config/initializers/session_store.rb(请参阅从 Rails 的任何位置访问“会话密钥”cookie 名称)。

找出 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
);
于 2012-06-07T21:18:10.010 回答