WordPress 和 JWT 以及自定义 API Rest 端点

标签 wordpress rest authentication jwt

我需要为 WordPress 提供一个插件,该插件将具有很少的自定义 API 端点,并且我已经安装了这两个插件

我创建了自定义端点:

add_action('rest_api_init', function ($data) {
    register_rest_route('mladi-info/v1', '/user/favorites', [
        'methods' => 'GET',
        'callback' => 'mi_get_favorite_posts'
    ]);
});

我需要保护此端点,以便只有那些发送了 JWT token 的请求(使用/wp-json/jwt-auth/v1/token 端点发送用户名和密码生成)才能被处理,否则应该返回 401 状态代码。我该怎么做?

最佳答案

注册新路由时应添加permission_callback参数。

    add_action('rest_api_init', function ($data) {
        register_rest_route('mladi-info/v1', '/user/favorites', 
            array(
                'methods' => 'GET',
                'callback' => 'mi_get_favorite_posts',
                'permission_callback' => function ($request) {
                        if (current_user_can('edit_others_posts'))
                        return true;
                 }
             )
        );
    });

JWT Auth 插件将根据 header 中的 token 值向permission_callback 函数提供用户对象,您所需要做的就是在该函数内计算出一些“权限逻辑”,该逻辑将返回一个 bool 值。

在我发布的解决方案中,仅当访问 REST 端点的用户具有“edit_others_posts”功能时,回调才允许访问 REST 端点 - 管理员和编辑者就是这种情况。

关于WordPress 和 JWT 以及自定义 API Rest 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45711303/

相关文章:

java - 浏览器中的 PIV 智能卡如何在没有小程序的情况下进行身份验证

Azure 移动应用自定义身份验证

html - 带有锚定标签的 WordPress 当前页面元素

php - 阿拉伯语 url 在 Windows IIS 服务器上的 WordPress 中不起作用

web-services - RestTemplate 返回类型

php - 'put'方法无法读取REST请求数据

javascript - 需要上一个调用的响应的多个 AJAX API 调用的最佳实践?

python - 具有多个数据库和应用程序特定路由器的 Django,无法在 MSSQL 中添加用户

php - 从 woocommerce api 产品/类别创建类别层次结构

css - Bootstrap 网站在 IE9 及以下版本无法识别