在发布请求中访问已登录的用户数据?
问题描述:
我有一个wordpress插件中包含的整个网站。我一直试图摆脱WordPress的,但我仍然依靠它来管理用户。我需要访问当前登录用户的数据,特别是他们的ID。在发布请求中访问已登录的用户数据?
当试图访问某些地方的数据我一直得到没有用户对象:
object(WP_User)#1033 (7) {
["data"]=>
object(stdClass)#1032 (0) {
}
["ID"]=>
int(0)
....
最后,它似乎归结为这一点。我想在控制器由我纤细的路由器叫了这样的数据:
$this->get('/assignments', function(Request $req, Response $res, array $args){
require_once $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php';
$ch_user = wp_get_current_user();
var_dump($ch_user);die();
}
和:
$this->post('/userdata', function(Request $req, Response $res, array $args){
require_once $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php';
$ch_user = wp_get_current_user();
var_dump($ch_user);die();
}
这两种途径都在同一组,彼此分开行。 第一个返回正确填充的用户对象,第二个返回ID为0的空对象。两者之间唯一的区别是一个是获取请求,另一个是发布请求。
我不是新闻专家,我对此完全感到困惑。
编辑:
我发现类似的问题得不到解决:
答
从您的评论我假设在你的WordPress会话当前用户使用标准设置WordPress登录,例如http://aaa.bbb.ccc/wp-login.php。
在这种情况下,当前的用户凭据将作为cookie收到。通常的凭证cookie位于$ _COOKIE [LOGGED_IN_COOKIE]中。您可以验证这是相同的两个端点的通过:
var_dump($_COOKIE[LOGGED_IN_COOKIE])
一种可能性是,这个cookie没有收到或损坏,则当前用户将被设置为0。
是的,你是对的,登录的cookie在get请求中正确,在post请求中为null。这两个操作在同一个地方以相同的方式完成,我只能认为问题在于纤细。我正在寻找任何与苗条帖子丢弃cookie有关的事情,但我似乎无法找到解决方案:/ – SpeedOfRound
登录的cookie可以直接由服务器删除(过期),或者通过在客户端运行的JavaScript代码间接删除浏览器。您可以检查服务器是否使用浏览器的网络工具直接删除(过期)登录的Cookie,并监控服务器发送的Cookie。服务器将通过过期来删除cookie。在Chrome网络工具上,服务器发送的Cookie称为响应Cookie。 – B68C
如果cookies被删除了,会不会把我注销?该cookie只在请求期间丢失。 – SpeedOfRound