【问题标题】:Retrieve JSON maintaining Browser Session检索 JSON 维护浏览器会话
【发布时间】:2012-06-08 05:42:30
【问题描述】:

我有一个用 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 以维护会话???

【问题讨论】:

  • 两个应用程序在同一个域中,不涉及子域。那么,有没有更简单的方法?
  • 该答案的第一部分不是特定领域的,并且可以工作

标签: php ruby-on-rails ruby curl


【解决方案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
);

【讨论】:

  • 我累了,它仍然显示用户并在他实际退出时退出
  • 我试过你的方法,不幸的是,它仍然无法正确读取,猜测会话cookie没有被正确读取/设置......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多