WP REST API 如何检查标头基本身份验证



像这样的自定义端点

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

相关内容

最新更新