在REST API调用中自动登录Wordpress用户

时间:2019-10-08 15:07:44

标签: reactjs wordpress wordpress-rest-api

我有一个React应用程序,目前使用Wordpress完成了用户身份验证。因此,我正在使用JWT_AUTH!用于管理用户登录功能的插件。
因此,现在需求已更改,用户应该只需一次登录即可登录React和Wordpress网站。这意味着如果用户登录到React应用程序,那么他也应该自动登录到他的Wordpress应用程序。同样,如果用户在Wordpress应用程序上登录,他也应该自动登录到他的react应用程序。

我已经创建了一个自定义的REST API端点来满足此要求。但是它没有按预期工作。当我在浏览器中使用此API链接时,此端点有效。那是因为它不具有通过REST API调用存储cookie的功能。
我还尝试使用其余的API调用生成身份验证Cookie,但它给了我“ 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");
    }

}

有没有简单的方法可以做到这一点?另外,如果可以通过rest api调用将用户重定向到其他网址,那也可以。

0 个答案:

没有答案