像这样的自定义端点
add_action( 'rest_api_init', function () {
register_rest_route( 'myplugin/v1', '/author/(?P<id>d+)', array(
'methods' => 'GET',
'callback' => 'my_awesome_func',
) );
} );
在标头中使用基本身份验证,假设"授权:基本 some64basePass">
如何检查标头中Authorization
的值是否有效?
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);
}
也许有更好的方法。
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-include\rest-api\class-wp-rest-server.php中的函数 WP_REST_Server::check_authentication((,以了解 WordPress 如何处理 REST 身份验证以及如何添加自己的身份验证处理程序。
此外,您应该阅读 $_SERVER['PHP_AUTH_USER'] 和 $_SERVER['PHP_AUTH_PW'] http://php.net/manual/en/features.http-auth.php