我试图添加自定义请求。
add_action('rest_api_init', function () {
register_rest_route( 'custom', '/login', array(
'methods' => 'GET',
'callback' => function(WP_REST_Request $request) {
return wp_get_current_user();
}
));
});
但它总是返回 ID = 0 的用户;我也试过这个:
add_action('rest_api_init', function () {
register_rest_route( 'custom', '/login', array(
'methods' => 'GET',
'callback' => function(WP_REST_Request $request) {
return is_user_logged_in();
}
));
});
它总是返回 false。但用户肯定已登录。
我添加了我的自定义登录
add_action('rest_api_init', function () {
register_rest_route( 'custom', '/login', array(
'methods' => 'POST',
'callback' => function(WP_REST_Request $request) {
$nonce = wp_create_nonce("wp_rest");
$user = wp_signon(array('user_login' => $_POST['username'],
'user_password' => $_POST['password'], "rememberme" => true), false);
if (is_wp_error($user)) {
return $user;
}
//do_action( 'wp_login', "capad" );
//$user['isloggedin'] = is_user_logged_in();
return array('user' => $user,
'nonce' => $nonce);
}
));
});
然后我将“X-WP-Nonce”添加为 http 请求的标头
现在每个请求输出: {"code":"rest_cookie_invalid_nonce","message":"Cookie nonce is invalid","data":{"status":403}}
原文由 Semyon Tikhonenko 发布,翻译遵循 CC BY-SA 4.0 许可协议
从 身份验证 章节,在 REST API 手册 中:
这是一个 GET 示例:
或者你的情况:
从哪里创建随机数
因此,您很可能在测试自定义端点时忘记了 nonce 部分。
希望能帮助到你!