Intereting Posts
Добавить пользовательское поле для пользователей Как заполнить описание дома? Какие файлы обновляются в обновлении плагина? Монитор обновлений плагина WordPress Показать сообщения за кварталом ничего не приходит, когда я иду на мой website.com/wp-admin? Какие файлы я должен искать? Создайте специальное слайд-шоу WordPress с "jquery.cycle.all.js" Добавление пользовательских метабокс в пользовательские страницы Включить разметку HTML после </ html> с помощью wp_mail () Почему здесь не работает мой if / elseif / else? Archive.php не отображает теги Как перейти к созданию файла css с переменными из параметров темы Интернационализировать плагин, поэтому строки могут быть переведены в WPML Можно добавлять примечания к полям с использованием URL? использовал wp_get_attachment_image () в цикле, чтобы отобразить страницу галереи пользовательского типа изображений, и теперь изображения не будут удалять f

Как войти на сайт WordPress с использованием основных HTTP-заголовков проверки подлинности?

Я хочу запустить некоторые из моих автоматических приемочных тестов в качестве зарегистрированного пользователя. Мои приемочные тесты запускаются с помощью Ghost Inspector, который может отправлять базовые заголовки аутентификации.

Существует базовый модуль аутентификации для REST API, поэтому, если кто-то не отвечает на это с лучшим решением, я взламываю это для работы с любым запросом.

Да, базовая аутентификация не является супербезопасной, но она настолько же безопасна, как и wp-login – IE отлично работает при использовании HTTPS. Кроме того, это тестовый сайт, а не сумасшедший, беспокоясь о безопасности.

Я бы просто подключился к фильтру define_current_user и проверил базовые данные аутентификации HTTP, чтобы вернуть пользователя.

Возможно, просто, возможно, я разрешу только конкретному пользователю регистрироваться через HTTP auth.

Это можно сделать, например, путем установки пользовательской опции.

Код может выглядеть примерно так (проверено OP):

 add_filter( 'determine_current_user', function( $cur_user ) { // If user already logged in or no HTTP AUTH info, return if ($cur_user || empty($_SERVER['PHP_AUTH_USER']) || empty($_SERVER['PHP_AUTH_PW'])) { return $cur_user; } // If there's no user with given username, return $found_user = get_user_by('login', $_SERVER['PHP_AUTH_USER']); if (!$found_user) { return $cur_user; } // If password does not match, return if ( ! wp_check_password( $_SERVER['PHP_AUTH_PW'], $found_user->user_pass ) ) { return $cur_user; } // Return found user ID only if allowed to login via HTTP in user meta return get_user_option( 'http_auth_login_allowed', $found_user->ID ) ? $found_user->ID : $cur_user; }, 30); 

Я использовал приоритет 30, потому что WP использует 20 (IIRC) для регистрации пользователя из файла cookie, так что это будет работать позже, и если пользователь будет найден в cookie, это ничего не сделает.

Проверка на то, чтобы requst is_ssl() мог быть добавлен для лучшей безопасности, даже если, честно говоря, я бы не запускал это на производственном сайте. Но, учитывая, что OP говорит, что цель – это тестовый сайт … это должно быть хорошо.