Авторизуйтесь в Wordpress автоматически по вызову REST API - PullRequest
0 голосов
/ 08 октября 2019

У меня есть приложение реагирования, и в настоящее время аутентификация пользователя выполняется с помощью Wordpress. Поэтому я использую JWT_AUTH ! Плагин для управления функциями входа пользователя.
Итак, теперь требование изменилось, и пользователи должны иметь возможность войти на сайты React и Wordpress за одну попытку входа. Это означает, что если пользователь входит в приложение React, он также должен автоматически войти в свое приложение Wordpress. Также, если пользователь входит в приложение Wordpress, он должен автоматически войти в свое приложение реакции.

Я создал пользовательскую конечную точку API REST для выполнения этого требования. Но это не работает, как ожидалось. Эта конечная точка работает, когда я использую эту ссылку API с браузером. Это потому, что у него нет возможности хранить куки с помощью вызова REST API.
Я также пытался сгенерировать куки авторизации с помощью оставшегося вызова API, но он выдал ошибку «500».

add_action( 'rest_api_init', function () {
    register_rest_route( 'user/v1', '/api-login-check', array(
        'methods' => WP_REST_Server::READABLE,
        'callback' => 'rest_api_login_user',
        'schema' => array(
            'type' => 'array'
        )
    ));
});

function rest_api_login_user($object, $request = null) {

    $response = array();
    $parameters = $request->get_json_params();

    $creds = array();

    $creds['user_login'] = $object['username'];
    $creds['user_password'] = $object['password'];
    $creds['remember'] = true;
    $user = wp_signon( $creds, false );

    if ($user) {
        $response['code'] = 200;
        $response['message'] = __("User logged in", "wp-rest-user");

        return new WP_REST_Response($response, 123);
    }else{
        $response['code'] = 403;
        $response['message'] = __("User not logged in", "wp-rest-user");
    }

}

Есть ли простой способ сделать это? Также, если есть способ перенаправить пользователя на другой URL-адрес от вызова API остальных, это тоже хорошо.

...