像这样的自定义端点
add_action( 'rest_api_init', function () {
register_rest_route( 'myplugin/v1', '/author/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'my_awesome_func',
) );
} );
在标题中使用基本身份验证,请说“授权:基本some64basePass&#39;
如何检查标题中Authorization
的值是否有效?
答案 0 :(得分:1)
WordPress有一个用于添加自己的身份验证处理程序的钩子。
add_filter( 'rest_authentication_errors', 'rest_basic_auth_check_errors', 99 );
如果基本身份验证成功,则rest_basic_auth_check_errors()应返回true;如果失败则返回WP_Error。由于默认的REST身份验证处理程序以优先级100运行,因此rest_basic_auth_check_errors()将覆盖默认处理程序。
请参阅文件中的函数WP_REST_Server :: check_authentication()... \ wp-includes \ rest-api \ class -wp-rest-server.php以了解WordPress如何处理REST身份验证以及如何添加自己的身份验证处理程序
中的$ _SERVER [&#39; PHP_AUTH_USER&#39;]和$ _SERVER [&#39; PHP_AUTH_PW&#39;]答案 1 :(得分:0)
这是我的解决方案。
在回调函数内部,我从标题中验证Authorization
,如下所示:
function my_awesome_func($data) {
//Get HTTP request headers
$auth = apache_request_headers();
//Get only Authorization header
$valid = $auth['Authorization'];
// Validate
if ($valid == 'Basic Base64UsernamePassword') {
//Do what the function should do
} else {
$response = 'Please use a valid authentication';
}
return json_encode($response);
}
也许有更好的方法。