如果通过来自phonegap的AJAX调用设置,CakePHP用户会话是否保留在服务器上?

时间:2014-12-11 05:59:50

标签: php ajax session cakephp cordova

我正在开发我的第一个使用CakePHP(Croogo)后端的phonegap应用程序。 如果我通过AJAX从phonegap向CakePHP发送我的用户名和密码,我可以使用CakePHP的$ this-> Auth-> login()成功登录。用户会话生成正确,我可以在登录后立即通过阅读$ this-> Session-> read('User')从CakePHP取回用户数据。 但是,如果我从我的phonegap应用程序再次进行AJAX调用以获得该用户会话,我就不会获得该值。

到目前为止,我认为如果我在服务器端设置会话,稍后可以读取(来自同一个浏览器会话),因为浏览器具有相应的cookie集。

现在我很困惑,如果CakePHP为每个AJAX调用创建一个新会话?

public function ajax_login_from_phonegap($user) {
  [...]
  if ($this->Auth->login($user)) {
    $response["user"] = $user;
    $response["msg"] = $this->Session->read('Auth.User.username');
    //here I got the correct value!
    return $response;
  }
  [...]
}  

public function another_action_from_phonegap() {
  echo $this->Session->read('Auth.User.username');
  // here I have null
}

我只是遗漏了一些东西,还是我错了? 在此先感谢您的帮助! (Configure :: version()='2.5.5')

2 个答案:

答案 0 :(得分:1)

我认为您的问题可能比CakePHP更常见。当您登录时,您的phonegapp应用程序是否保留会话cookie?你在第二次AJAX通话时发送了那个cookie吗? Sessions有效,因为客户端跟踪包含其会话ID的cookie,然后在每次发出请求时发送它,这样服务器就可以识别会话并将其与相应的会话相关联。

答案 1 :(得分:0)

您已设置$this->Session->('User'),但您正在尝试阅读$this->Session->('Auth.user.username')