为您的WordPress Rest API进行身份验证 | 作者:Gemma Black - Medium
如果您正在管理区域内开发一个单页应用程序(SPA),您一定不希望任何人都能随意访问您的端点。本文将为您提供一份简明的操作指南,帮助您为 WordPress REST API 实现身份验证,确保端点安全。
先决条件
在开始之前,请确保满足以下条件:
- 您需要了解如何创建 WordPress REST 端点。
- 您已经安装了 WordPress。
以下是 register_rest_route 方法的一个最简单示例:
$options = [
'methods' => 'GET',
'callback' => function() {
return 'This is a protected route. Hi there!';
}
];
methods参数:指定 HTTP 请求方法(如 GET、POST 等)。callback参数:定义一个函数,用于返回数据或执行操作。
然而,上述回调函数并未受到任何保护,任何人都可以访问该路由并获取允许的数据。
如何保护您的端点?
要保护端点,只需添加一个 permission_callback 参数。该参数是一个返回布尔值的函数,用于指示当前用户是否有权限访问回调。
$options = [
'methods' => 'GET',
'callback' => function() {
return 'This is a protected route. Hi there!';
},
'permission_callback' => function() {
return false;
}
];
在上述代码中,由于 permission_callback 返回 false,因此没有人可以访问该路由。
允许特定用户访问
WordPress 提供了一个名为 current_user_can 的全局函数,用于检查当前用户的权限。您可以利用它来限制特定用户访问端点。
$options = [
/*....*/
'permission_callback' => function() {
return current_user_can('edit_others_posts');
}
];
在这个示例中,只有具有 edit_others_posts 权限的用户才能访问该路由。如果用户仅具备 activate_plugins 权限,而不具备 edit_others_posts 权限,他们将无法访问。
告诉 WordPress 当前用户是谁
尽管通过权限函数可以保护路由,但 WordPress 需要知道当前用户的身份才能正确验证权限。以下是两种实现方式:
- Cookie:当您在管理区域时,WordPress 会自动设置 Cookie。
- Nonce:您需要在请求头中发送一个随机数(Nonce),通常以
X-WP-Nonce的形式传递。
如果您使用 Fetch API,您的请求代码可能如下:
fetch('/wp-json/myplugin/v1/author/hi', {
credentials: 'include',
headers: {
'content-type': 'application/json',
'X-WP-Nonce': wpApiSettings.nonce
}
});
在页面中添加 wp_rest 随机数
为了生成并传递 Nonce,可以通过以下方式将其添加到页面的 JavaScript 文件中:
add_action('admin_init', function() {
wp_localize_script('custom-js-file', 'wpApiSettings', array(
'root' => esc_url_raw(rest_url()),
'nonce' => wp_create_nonce('wp_rest')
));
});
在上述代码中,wp_create_nonce 函数用于生成一个符合 WordPress 标准的随机数。
总结
通过以上步骤,您可以有效保护 WordPress REST API 的端点,确保只有经过身份验证的用户才能访问敏感数据或执行操作。如果您在管理区域内开发单页应用程序,这种方法尤其重要。
如果您有任何疑问或发现文中有未提及的内容,请随时留言或联系我,我会尽快为您解答。
原文链接: https://medium.com/@GemmaBlack/authenticating-your-wordpress-rest-apis-84d8775a6f87
最新文章
- 9个最佳Text2Sql开源项目:自然语言到SQL的高效转换工具
- 深入解析API网关策略:认证、授权、安全、流量处理与可观测性
- GraphQL API手册:如何构建、测试、使用和记录
- 自助式入职培训服务API:如何让企业管理更上一层楼?
- Python如何调用Jenkins API自动化发布
- 模型压缩四剑客:量化、剪枝、蒸馏、二值化
- 火山引擎如何接入API:从入门到实践的技术指南
- 为什么每个使用 API 的大型企业都需要一个 API 市场来增强其合作伙伴生态系统
- FAPI 2.0 深度解析:下一代金融级 API 安全标准与实践指南
- .NET Core 下的 API 网关
- 探索月球的魅力:Moon-API一站式月球数据服务
- 掌握API架构:全面指南