欢迎光临 WordPress 智库!

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

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

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

WordPress REST API 插件支持 3 种用户认证方式,分别是:Cookie 认证、oAuth 认证和基本 HTTP 认证。通过 WordPress REST API 获取信息时,这种认证是不需要的,直接获取就可以了。只有在发送信息 (POST)到 API 的时候才需要用户认证,否则将返回 HTTP 403 未授权错误。今天我们来介绍一下最简单的 Cookie 认证方式。

认证的原理是使用 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 认证的方法大家可以参考官方文档,如果我有机会测试,也会及时发布文章说明使用方法。

本站提供 WordPress 主题定制开发服务

本站长期承接 WordPress 主题、插件、基于 WooCommerce 的商店商城开发业务。 我们有 8 年 WordPress 开发经验,如果你想 用 WordPress 开发网站, 请联系 QQ: 470266798,或邮箱: 4626395@gmail.com 咨询。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*