目标是仅使用 AJAX 调用,在扩展程序模块中以 PHPBB 3.1.10 获取用户的登录状态。< / p>
我在本地机器上的XAMPP上已经成功了。 (意味着在该环境中不存在所描述的问题)我现在正试图通过在实时PHPBB安装上安装扩展来将其推广到我的在线站点。
现在的问题是,与我的本地环境相反,@ user 由依赖注入机制传递的对象总是如此 “匿名”,无论我是否登录。
“匿名”是未登录的PHPBB用户的用户名。
对于PHP服务器设置 - 我对实时环境中的PHP配置没有直接影响,但对于.htaccess而言,我对这方面的可能性知之甚少。
这是我的服务定义,路由信息和用于读取@user对象的授权类。
转/富/酒吧/ services.yml
services:
foo.bar.helper.auth:
class: foo\bar\helper\Auth
arguments:
- '@user'
- '%core.root_path%'
- '%core.php_ext%'
转/富/酒吧/配置/ routing.yml中
foo_bar_getUserStatus:
path: /getUserStatus
defaults: { _controller: foo.bar.helper.Auth:getUserStatus }
转/富/酒吧/辅助/ Auth.php
<?php
namespace foo\bar\helper;
class Auth{
/* @var \phpbb\user */
protected $user;
/** @var string */
protected $root_path;
/** @var string */
protected $php_ext;
/**
* Constructor
*
* @param \phpbb\user $user
* @param string $root_path
* @param string $php_ext php ext
* @access public
*/
public function __construct(
\phpbb\user $user,
$root_path,
$php_ext)
{
$this->user = $user;
$this->root_path = $root_path;
$this->php_ext = $php_ext;
include_once($this->root_path
. 'includes/functions_user.'
. $this->php_ext);
}
// AUTHORIZATION
public function __getUserStatus(){
$userStatus = array( 'isLoggedIn' => false );
if ($this->user->data['is_registered'] && ! $user->data['is_bot']){
$userStatus['isLoggedIn'] = true;
$ADMINS_GROUP_ID = '5';
if(group_memberships($ADMINS_GROUP_ID, $this->user->data['user_id'], true)){
$userStatus['isAdmin'] = true;
}
}
return $userStatus;
}
public function getUserStatus(){
return new \Symfony\Component\HttpFoundation\JsonResponse(array(
'success' => $this->__getUserStatus()
));
}
}
更新11.01.17
我已经设法让扩展能够在PHPBB 3.2(最近发布)和PHP 7.0的全新安装上正常运行。 (在与活动服务器环境相同的服务器环境中运行)
我仍然不知道为什么没有正确设置用户对象。 我还没有检查是否可以将数据从PHPBB 3.1.10迁移到PHPBB 3.2的全新安装。
我需要一些时间来解决问题,因为我没有全职工作。