【问题标题】:WP REST API how to check header basic authenticationWP REST API 如何检查标头基本身份验证
【发布时间】:2018-04-29 03:59:34
【问题描述】:

这样的自定义端点

add_action( 'rest_api_init', function () {
    register_rest_route( 'myplugin/v1', '/author/(?P<id>\d+)', array(
        'methods' => 'GET',
        'callback' => 'my_awesome_func',
    ) );
} );

在标头中使用基本身份验证,比如说“授权:基本 some64basePass”

如何检查标头中Authorization 的值是否有效?

【问题讨论】:

    标签: wordpress api


    【解决方案1】:

    这是我的解决方案。 在回调函数中,我从标头中验证 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);
    }
    

    也许有更好的方法。

    【讨论】:

      【解决方案2】:

      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-includes\rest-api\class-wp-rest-server.php 中的函数 WP_REST_Server::check_authentication() 以了解 WordPress 如何处理 REST 身份验证以及如何添加您自己的身份验证处理程序.

      另外,您应该阅读http://php.net/manual/en/features.http-auth.php 中有关 $_SERVER['PHP_AUTH_USER'] 和 $_SERVER['PHP_AUTH_PW'] 的信息

      【讨论】:

        猜你喜欢
        • 2014-11-06
        • 2016-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多