您可以使用custom\\u auth参数来处理这种情况
<小时/>
Edited
JWT有一个名为JWT\\u auth\\u custom\\u auth的过滤器,它将在收到包含“custom\\u auth”的负载时运行。您需要使用add\\u fitler函数挂接到该过滤器。请参阅下面的代码。
在我的例子中,第一块代码转到我的rest api自定义端点,在那里我使用它仅使用电子邮件地址登录/注册用户
第二个块是挂钩到过滤器,我选择把它放在我的插件文件中,但你也可以把它放在你的主题函数中。php文件
您可以在这个文件wp content\\plugins\\jwt auth\\class auth中看到逻辑。php第115行->;160
<小时/>
$_request = new WP_REST_Request( \'POST\', \'/jwt-auth/v1/token\' );
$_request->set_header( \'content-type\', \'application/json\' );
$_request->set_body(
json_encode(
[
\'username\' => $email,
\'custom_auth\' => true,
]
)
);
$response = rest_do_request( $_request );
return $response->data[\'data\'][\'token\']; // this will return a token
在你的功能中。php
add_filter(
\'jwt_auth_do_custom_auth\',
function ( $custom_auth_error, $username, $password, $custom_auth ) {
if ( is_wp_error( $custom_auth_error ) ) {
return null;
}
$user = get_user_by( \'email\', $username );
return $user;
},10,4);
我希望这有帮助
注:未测试