WordPress rest API:我们如何使用我们的定制API密钥进行验证?

时间:2019-05-31 作者:Bilwo

如何使用我们生成的API密钥验证WordPress的“endpoint”函数的“Cancel the header auth”。(注意:不是其他端点,而是原始端点)

我有自己的“加密”类/函数。在请求中,我需要发送一个加密密钥,“解密”来自“wp函数”的“加密密钥”等等,并允许请求。

我需要能够在wordpress自己的端点库上完成所有这些。

A simple example of my query structure:

$.ajax({
  type: "POST",
  url: "http://localhost/workspace/wordpress/wp-json/wp/v2/posts?request=<?php echo $encrypted; ?>",
  dataType: "json"
});

PHP

<?php echo $encrypted; ?>
<?php // "z0/8Q6cuMWBlZGzfTwOVi9HwCpKThN9Ju/o/MywK74vimB467vjGfKqoDVQdyKIdmXCxxE=" ?>

functions.php or e.g. php page: After Decrypt

<?php echo $decrypted; ?>
<?php // "Secret Password" ?>
<?php // I will verify my key, and to let

enter image description here

enter image description here

2 个回复
最合适的回答,由SO网友:BOZ 整理而成
function checkApiAuth( $result ){

    $yourEncryptAPIKey = $_GET[\'request\'];

    if( yourDecryptFn( $yourEncryptAPIKey ) === $realKey ):
        $result = true;

    else:
        $result = false;

    endif;

    return $result;           
}
add_filter(\'rest_authentication_errors\', \'checkApiAuth\');
SO网友:kero

听起来你可以使用rest_authentication_errors 过滤器:

用于传递WP_Error 从身份验证方法返回API。

[…]如果实际没有尝试挂接的身份验证方法,null 应返回[…]。类似地,回调应确保值为null 检查错误之前。

A.WP_Error 如果发生错误[…],则可以返回实例。回调可以返回true 表示使用了身份验证方法,并且成功。

对于代码示例,您可以查看WP如何对X-WP-Nonce 标题输入wp-includes/rest-api.php starting at line 807.

(功能rest_cookie_check_errorsadded to the rest_authentication_errors filter with priority 100.)

相关推荐

Assign Json file to WP_Query

我正在用非常有限的时间处理一个不必要的复杂主题。由于我们拥有的记录数量太多,加载时间慢得令人无法忍受,因此我们希望使用json文件缓存记录(宁愿不使用瞬态,也不要完全使用数据库)。主题使用WP\\u Query($args)从数据库中获取结果。我们希望只提取一次查询,并为后续请求使用json缓存文件。问题是因为我们拥有的文件数量太多,我们必须修改并深入主题的内部工作以使用json文件。因此,与此相反:$my_query1 = new WP_Query($args);