【问题标题】:User not recognized through Parse\ParseUser, but exists in $_SESSION用户无法通过 Parse\ParseUser 识别,但存在于 $_SESSION 中
【发布时间】:2014-09-22 14:07:47
【问题描述】:

我目前正在使用 Parse.com 编写一个用 PHP 构建的网站来存储该网站的数据。我之前在几个项目中使用过 parse,其中一些功能非常适合。我现在遇到了无法正确检测到登录用户的问题。

<?php
  use Parse\ParseClient;
  use Parse\ParseObject;
  use Parse\ParseQuery;
  use Parse\ParseGeoPoint;
  use Parse\ParseUser;


  ParseClient::initialize('Omitted', 'Omitted', 'Omitted');
  (... truncated)

  function get_user(){
    //BROKEN.
    //TODO: Fix
    $currentUser = ParseUser::getCurrentUser();
    if ($currentUser) {
        return $currentUser->getObjectId();
    } else {
        return false;
    }
  }

  (... truncated)
?>

此代码仅对 parse 给出的 PHP 示例中的代码进行了少量修改,但无论“登录”状态如何,似乎都返回 false

调用会话开始以确保会话正在运行,调用print_r($_SESSION) 输出包含相关用户对象的转储。

我知道我可能错过了一些愚蠢的事情,但任何正确方向的指示将不胜感激。

【问题讨论】:

  • 听起来 currentUser 还没有登录。你是调用适当的注册还是登录?
  • 是的,调用 signUp 或 logIn 都会成功返回,在相关的位置创建一个用户,但登录似乎不会持续存在。如上所述,转储 $_SESSION "Superglobal" 包含登录用户的详细信息,但 ParseUser::getCurrentUser() 无论如何都会返回 false。让我很困惑!

标签: php parse-platform


【解决方案1】:

供参考 - 我使用的是专用的 Windows 服务器,它以某种非标准方式配置。我们已经从 Windows 服务器迁移,因为 Windows - 以及一系列不相关的问题意味着使用 CentOS 更容易。

通过显式调用 parse 的会话存储设置器解决了这个问题 - ParseClient::setStorage( new ParseSessionStorage() );

这是出乎意料的,因为 $_SESSION 全局确实包含相关信息 - 但 parse 在设置会话存储之前不会选择它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2020-09-29
    相关资源
    最近更新 更多