无头Wordpress:如何验证前端请求?

时间:2019-09-18 作者:Sean D

我设想在后端使用Wordpress来处理React。前端的js如下:

Wordpress安装在http://example.com/apihttp://example.com/index.html, 通过脚本标记,然后注入到根div中,但存在一个问题。如果没有wordpress控制注册和排队,我看不到如何将nonce本地化到React中。js脚本文件。

没有nonce,路由将无法进行身份验证,因为cookie验证需要在X-WP-Nonce 标题。https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/

可以对nonce发出API请求,但路由必然不受保护,因此非常不安全。

解决这个问题的方法是什么?你们是如何设置headless wordpress将身份验证信息(如nonce)传递到前端脚本文件的?

1 个回复
SO网友:Jacob Peattie

nonce身份验证方法仅适用于WordPress内部发出的请求,如您自己的链接(emphasis mine)中所述:

请务必记住,此身份验证方法依赖于WordPress Cookie。As a result this method is only applicable when the REST API is used inside of WordPress and the current user is logged in. 此外,当前用户必须具有执行正在执行的操作的适当能力。

然后,您的链接描述了可用于远程请求的其他一些方法:

虽然cookie身份验证是WordPress中本机可用的唯一身份验证机制,但可以添加插件以支持远程应用程序的其他身份验证模式。一些示例插件包括OAuth 1.0a Server, Application Passwords, 和JSON Web Tokens.

如果您正在从WordPress之外的React应用程序发出经过身份验证的请求,则需要使用其中一种方法。

相关推荐

REST API和按元值过滤

我有一个posttype“timeslip”,我使用以下API端点调用它:/wp-json/wp/v2/timeslip?meta_key=user_id&meta_value=1 我已将自定义字段user\\u id公开给API元,并可以在响应中看到它。add_filter(\'rest_timeslip_query\', array($this, \'timeslip_meta_request_params\')); public function registe