WordPress RESTful API 的授权方式
像素鱼丸
2023-07-09
1459
0

WordPress 5.6 以后内置了RESTful API,并且建议用户一定不要关闭,否则会影响WordPress后台的某些功能。调用某些接口的时候,会提示

{code: "rest_cannot_edit", message: "抱歉,您不能编辑此用户。", data: {status: 401}}

Cookie Authentication 是 WordPress 内置的身份验证方法。登录仪表板时,会生成cookie。 但是,REST API包含一种称为nonce的技术来避免CSRF的问题。

使用内置Javascript API的开发人员,WordPress 会自动处理 nonce。自定义数据模型可以扩展wp.api.models.Base 确保为任何自定义请求正确发送。

对于自己启用 Ajax的情况,需要在请求的地址后面,加上一个 nonce 参数“_wpnonce”。可以使用 wp_create_nonce(‘wp_rest’) 生成 _wpnonce。举个例子:

http://www.vtheme.cn/wp-json/wp/v2/users/2?_wpnonce=9aaea876fd

axios 例子:

var wpnonce = document.querySelector("input[name='wp_create_nonce']").value;
var url = document.querySelector(".ajax-form").getAttribute("action") + "?_wpnonce=" + wpnonce;
var userId = document.querySelector("input[name='id']").value;
var formData = new FormData();
formData.append('id', userId);
formData.append('nickname', '木瓜');

axios({
    headers: { 'Content-Type': 'multipart/form-data' },
    method: 'post',
    url: url,
    responseType: 'json',
    data: formData,
})
    .then(function (response) {
        console.log("response: ", response);
    })
    .catch(function (error) {
        console.log("error:", JSON.stringify(error) );
    });

除了这个,还有两种方式 处理接口权限的问题,推荐使用类似第三种 JSON Web Token.


Application Passwords

WordPress 5.6 以前是个插件,现在已经集成到WordPress中了。

functions.php 中添加 add_filter( ‘wp_is_application_passwords_available’, ‘__return_true’ ); 进行开启。然后在控制面板->所有用户->编辑用户中,即出现应用程序密码设置。或者使用基于 Cookie Authentication 的方法创建,相关接口参看:https://wordpress.org/plugins/application-passwords/

应用程序密码允许通过非交互式系统(例如XML-RPC或REST API)进行身份验证,而无需提供您的实际密码。应用密码很容易被撤销。它们不能用于通过传统方式登录您的网站。

 


JSON Web Tokens

插件地址: http://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/

VScode RESTclinet 例子:

###
POST http://www.vtheme.cn/wp-json/jwt-auth/v1/token
content-type: application/json

{
    "username": "test",
    "password": "123123"
}

###
GET http://www.vtheme.cn/wp-json/wp/v2/users/me/application-passwords
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1LKJ9.eyJpc3MiOiJodHRwOlwvXC93d3cudmVyeXRoZW1lLmGJKSIsImlhdCI6MTYyNTg1NTU4NSwibmJmIjoxNjI1ODU1NTg1LCJleHAiOjE2MjY0NjAzODUsImRhdGEiOnsidXNlciI6eyJpZCI6IjEifX19.vgfz24DIDFddML3m4OplbJgvWcmCsktSdf14_Jhjkhjk

 

参考:http://developer.wordpress.org/rest-api/using-the-rest-api/authentication/

收藏
打赏
WordPress 自定义文章排序
上一篇
WordPress 调用自定义头像
下一篇

发表评论

注册不是必须的

像素鱼丸
149 文章
0 评论
4 喜欢
最新文章

Mirage 主题 v2.93.0 发布

更新内容: refactor 移除图片高宽比开关 refactor 移除全局的TOC生成开关 refactor 优化 header.php 中的seo模块和样式覆盖 feat 主题启用的时候,移除非当前主题注册的小工具 fix 修复分类小工具的bug feat 管理员打开后台,检查最当前设置首页布局的模块,如果缺少最新模块,就添加到隐藏模块列表中 fix 优化链接卡片样式 fix 优化热门文章样式 […]

如何使用 WordPress Setting API

使用 WordPress 的 Setting API 是在插件或主题中创建和管理设置页面的标准方式。它提供了一种结构化、安全的方式来保存和获取用户配置的选项。 ✅ 一、Setting API 简介 WordPress 的 Setting API 允许你: 创建设置页面(Settings Page) 注册设置字段(Settings Field) 验证和保存设置数据 使用表单提交来更新设置 ✅ 二、基 […]

详解 WordPress 的评论设置

好的,我们来详细梳理并总结 WordPress 中关于文章评论的两个核心控制层级:全局设置和单篇设置。理解这两者的关系(优先级)是管理网站评论的关键。 1. 全局设置 (Global Settings) —— 网站的“默认规则” 这是整个网站评论系统的总开关和默认行为准则。它决定了新发布的文章默认是什么样子的。 位置:WordPress 后台仪表盘 -> 设置 (Settings) -> […]

wp_handle_comment_submission 函数

wp_handle_comment_submission() 是 WordPress 中用于处理评论提交的核心函数之一。它通常在用户提交评论时被调用,负责验证和处理评论数据,并最终将评论插入到数据库中。 ✅ 函数作用 wp_handle_comment_submission() 的主要功能是: 验证用户提交的评论数据(如评论内容、用户名、邮箱等) 检查是否为垃圾评论(通过 Akismet 或其他过 […]
生成中...
扫描二维码
扫描二维码
用户登录