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

use*_*558 4 php wordpress jwt

我使用“JWT WP-API 身份验证”插件来登录并生成令牌。

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

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

yiv*_*ivi 8

您需要使用过滤器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['some_meta'] = $user->get('some_meta');

    return $token;
}
Run Code Online (Sandbox Code Playgroud)

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

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

过滤器接收到的对象是( linky$user )的实例。WP_User