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

时间:2019-05-03 14:19:10

标签: php wordpress jwt jwt-auth

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

在JSON响应上,我只有SELECT View1.id as id1, des, Table1.id as id2, description FROM View1 INNER JOIN Table1 WHERE SOUNDEX(des) = SOUNDEX(description) ; 表中的一些数据。

由于我想知道用户状态级别,因此如何更改它以从wp_users表中获取其他一些值。

1 个答案:

答案 0 :(得分:2)

您需要使用过滤器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,
                ]
            ]
];