如何更改 WP-API 的 JWT 身份验证的 JSON 响应?

Posted

技术标签:

【中文标题】如何更改 WP-API 的 JWT 身份验证的 JSON 响应?【英文标题】:How to change JSON response on JWT Authentication for WP-API? 【发布时间】:2019-09-22 02:42:45 【问题描述】:

我已使用“JWT Authentication for WP-API”插件登录并生成令牌。

在 JSON 响应中,我只有 wp_users 表中的一些数据。

如何更改它以在响应时从wp_usermeta 表中获取一些其他值,因为我想知道用户状态级别。

【问题讨论】:

【参考方案1】:

您需要使用过滤器jwt_auth_token_before_signjwt_auth_token_before_dispatch

第一个过滤器接收令牌数据和一个用户对象。

在另一个插件或您的主题中,您需要调用add_filter

我的 Wordpress 有点生疏,我没有方便的 WP 实例来测试它,但这是一般理论:

基本示例:

add_filter('jwt_auth_token_before_sign', 'add_user_info_jwt', 10, 2);

function add_user_info_jwt($token, $user) 

    // fetch whatever information you want from the user, probably using the $user
    // object as starting point.

    $token['roles'] = implode(',', $user->roles);;

    return $token;


您收到的$token 将具有以下起始结构和信息:

$token = [
            'iss'  => get_bloginfo( 'url' ),
            'iat'  => $issuedAt,
            'nbf'  => $notBefore,
            'exp'  => $expire,
            'data' => [
                'user' => [
                    'id' => $user->data->ID,
                ]
            ]
];

【讨论】:

以上是关于如何更改 WP-API 的 JWT 身份验证的 JSON 响应?的主要内容,如果未能解决你的问题,请参考以下文章

将 Woocommerce REST API 与 WP-API 的 JWT 身份验证一起使用时,无法获得超过 12 个结果

使用 JWT 进行身份验证的最佳实践

如何在某人更改密码后使用户的 JWT 令牌无效

如何添加身份验证中间件 JWT django?

ASP.NET Core JWT 身份验证更改声明(子)

使用 React 处理 JWT 身份验证