处理 WordPress REST API(WP API) 中的用户认证,发送 POST 请求

文 / @WordPress主题

WordPress REST API 插件中的用户认证方式

您好,我是一名小本本,今天给大家介绍一下 WordPress REST API 插件中的用户认证方式。

支持的用户认证方式

WordPress REST API 插件支持三种用户认证方式,分别是 Cookie 认证、oAuth 认证和基本 HTTP 认证。使用 WordPress REST API 获取信息时,一般不需要进行用户认证,直接获取即可。但是,在向 API 发送信息(POST)时,就需要进行用户认证,否则会返回 HTTP 403 未授权错误。

认证的原理是使用 wp_nonces 来确保 POST 请求是合法的站内请求,而不是其他客户端发送的。

function enqueue_scripts_styles_init() {
    wp_enqueue_script('ajax-script', get_stylesheet_directory_uri() . '/js/script.js', array('jquery'), 1.0);
    wp_localize_script('ajax-script', 'WP_API_Settings', array(
        'root' => esc_url_raw(rest_url()),
        'nonce' => wp_create_nonce('wp_rest')
    ));
}
add_action('init', 'enqueue_scripts_styles_init');

添加 nonce 信息到 POST 请求中

// 添加请求配置
var xhrConfig = function (xhr) {
    xhr.setRequestHeader("X-WP-Nonce", WP_API_Settings.nonce);
};

// 模型
var posts_add = {
    // 获取数据, 初始化数据
    getData: function () {
        return {
            title: m.prop(""),
            content: m.prop(""),
            saved: m.prop(false),
            error: m.prop("")
        }
    },

    // 设置数据, 保存表单的数据
    setData: function (data) {
        return m.request({
            method: "POST",
            url: "/wp-json/wp/v2/posts/",
            config: xhrConfig,
            data: {
                title: data.title(),
                content: data.content()
            }
        })
            .then(data.saved.bind(this, true), data.error);
    }
};

以上代码是基于 Mathril 的,使用其他前端框架或者在后端发送 POST 请求到 REST 的认证方法是一样的。文中的代码仅供参考。如果您想了解 oAuth 认证和基本 HTTP 认证的方法,可以参考官方文档。如果我有机会测试,也会及时发布文章说明使用方法。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。