如何更改 WP-API 的 JWT 身份验证的 JSON 响应?
How to change JSON response on JWT Authentication for WP-API?
我已经使用 "JWT Authentication for WP-API" 插件登录并生成令牌。
在 JSON 响应中,我只有一些来自 wp_users
table 的数据。
如何更改它以在响应时从 wp_usermeta
table 中获取一些其他值,因为我想知道用户状态级别。
您需要使用过滤器 jwt_auth_token_before_sign
或 jwt_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,
]
]
];
我已经使用 "JWT Authentication for WP-API" 插件登录并生成令牌。
在 JSON 响应中,我只有一些来自 wp_users
table 的数据。
如何更改它以在响应时从 wp_usermeta
table 中获取一些其他值,因为我想知道用户状态级别。
您需要使用过滤器 jwt_auth_token_before_sign
或 jwt_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,
]
]
];