因为目前处理的 wordpress 网站使用了,使用
qtranslate-x
多语言插件JWT Authentication for WP REST API
插件 rest api 登录
调用wp-json/jwt-auth/v1/token
可以登录成功,但通过 jwt.io 网站中的 Debugger
,发现 token的 末尾多了 语言后缀 ,如图:
因为 get_bloginfo('url')
方法获取到的是没有 语言后缀或 默认语言的 wordpress 站点地址(URL)
只能修改 jwt-authentication-for-wp-rest-api/public/class-jwt-auth-public.php
的 validate_token
方法
将
$token = JWT::decode($token, $secret_key, array('HS256'));
/** The Token is decoded now validate the iss */
if ($token->iss != get_bloginfo('url')) {
/** The iss do not match, return error */
return new WP_Error(
'jwt_auth_bad_iss',
__('The iss do not match with this server', 'wp-api-jwt-auth'),
array(
'status' => 403,
)
);
}
修改为
$token = JWT::decode($token, $secret_key, array('HS256'));
//get_bloginfo('url')
$iss_url = defined('JWT_AUTH_ISS_URL') ? JWT_AUTH_ISS_URL : get_bloginfo('url');
/** The Token is decoded now validate the iss */
if ($token->iss != $iss_url) {
/** The iss do not match, return error */
return new WP_Error(
'jwt_auth_bad_iss',
__('The iss do not match with this server', 'wp-api-jwt-auth'),
array(
'status' => 403,
)
);
}
最后在站点的 wp-config.php
中,添加一个
// this value equal `WordPress Address (URL)`
define('JWT_AUTH_ISS_URL','http://192.168.1.184/test');