it-roy-ru.com

WP установка файла cookie с использованием Ajax не сохраняется в браузере

Мы создаем внешнюю панель управления, которая использует данные Wordpress, очевидно, мы используем WP REST API v2

Мы хотим полного отделения от традиционной WP панели инструментов, но мы также хотим, чтобы пользователь "за сценой" входил в WP панель администратора, поэтому мы можем перенаправить пользователя на некоторые страницы интерфейса администратора плагина; из-за ограничений API WP REST

Это то, что мы сделали, мы создали собственный плагин, который имеет функцию createAuthkey ниже, которая выполняет вход в систему пользователя, затем создает ключ (токен).

Важная часть, которая нас волнует, - если вход в систему успешен (wp_authenticate ()), мы также хотим сохранить wp_auth_cookie в браузере, поэтому даже если пользователь не вошел напрямую в/wp-admin, если теперь браузер заходит на WP страницы администратора, мы хотим, чтобы они вошли в систему и поэтому мы используем wp_set_auth_cookie (), но ответ AJAX НЕ сохраняет возвращенный файл cookie в ресурсы браузера (но правильно возвращает его в ответ) и поэтому, когда пользователь перенаправляется на WP страницу администратора, он выходит из системы

function createAuthKey( WP_REST_Request $request )
{
    // Get login information
    $username   = $request->get_param( 'username' );
    $password   = $request->get_param( 'password' );

    $user = wp_authenticate( $username, $password );

    if ( is_wp_error( $user ) ) {
     return false;
    }

    $converter = new Encryption;
    $encoded = $converter->encode($username . ":" . $password);

    // Set Cookie: NOT SAVED TO BROWSER!!!
    wp_set_auth_cookie($user->ID, true);

    return ['key' => $encoded, 'cookie' => $_COOKIE];
}
4
Nizar Blond

Я предполагаю, что ваша пользовательская панель мониторинга находится в другом домене/поддомене, чем установка WordPress. Файлы cookie могут быть установлены только для текущего домена.

Как правило, куки не будут работать в разных доменах. Таким образом, ваша панель не может создать cookie для веб-сайта WordPress. Теоретически возможно обойтись с некоторыми конфигурациями сервера, но этот метод должен поддерживаться браузером пользователя.

1
Philipp