依赖于WordPress用户的WordPress REST API调用

时间:2021-07-09 作者:run_the_race

我有一个Wordpress 网站,我有另一个server.

人们登录wordpress站点,然后在稍后阶段浏览其他服务器。在另一个服务器页面上,有从Wordpress REST API获取信息的JS fetch请求。我希望Wordpress服务器根据用户的不同返回不同的结果。

我可以连接到wp\\u登录,例如。

<?php
function login_server_aswell( $user_login, $user ) {
    // tell server user loggin in, get session token back
    // Now can\'t store the session token in a place where when they browse to the server webpage it can see the cookie
}
add_action(\'wp_login\', \'login_server_aswell\', 10, 2);
?>
我的问题是,在我登录后,我可以告诉其他服务器,这个用户登录后,给我一个会话令牌。但是我只能将会话令牌存储在wordpress站点下的cookie中,而不能存储在服务器站点下,因为cookie不是跨站点的。

有什么概念或总体指导可以为我指明正确的方向吗?

1 个回复
最合适的回答,由SO网友:Jos Faber 整理而成

您可以连接到WP站点中的登录过程,并在登录时为该用户创建一个唯一的令牌(存储在meta中)。然后可以将令牌发送到另一台服务器,该服务器可以使用该令牌查询WP API。

您必须创建一个自定义端点来验证用户令牌。可能最好也为userid设置一些哈希。

此外,在从WP站点注销或在某些令牌验证cronjob中注销时,出于安全目的,必须使该令牌无效。更好的是,如果只是来自“另一个”服务器的一个请求,则立即失效,如果再次在WP服务器上,则创建一个新令牌。所以实际上,它是多个服务器上的CSRF令牌(nonce)。

相关推荐

如何在WordPress 4.7+中使用REST-API进行元查询?

我试图通过元查询进行过滤,但无论我尝试什么,我都无法使其工作。基本上,我希望通过rest API进行此查询:wp-json/wp/v2/books?meta_query[relation]=OR&meta_query[0][key]=arkivera&meta_query[0][value]=1&meta_query[0][compare]== 我尝试了几个不同的自定义字段,但它总是返回所有post对象。在我的函数文件中,我添加了:function api_allow_m