Для реализации аутентификации в PHP файле при использовании WP REST API вам понадобятся некоторые предварительные настройки и действия.
1. Установите и активируйте плагин JWT Authentication for WP REST API. Этот плагин добавляет поддержку JSON Web Tokens (JWT) для аутентификации WP REST API.
2. Создайте файл authenticate.php
, который будет использоваться для аутентификации пользователя. Предположим, что вы разместили этот файл в корневой папке вашего WordPress-сайта.
3. Внутри файла authenticate.php
добавьте следующий код:
<?php require_once('wp-load.php'); $username = $_POST['username']; $password = $_POST['password']; $user = wp_authenticate($username, $password); if (is_wp_error($user)) { // Аутентификация не удалась $response = array( 'success' => false, 'message' => 'Invalid username or password' ); wp_send_json($response, 401); } else { // Аутентификация успешна $user_id = $user->ID; $token = JWT::encode($user_id, 'your_secret_key'); // Замените 'your_secret_key' на свой секретный ключ $response = array( 'success' => true, 'token' => $token ); wp_send_json($response); } ?>
4. В вашем файле functions.php
или в плагине добавьте следующий код, чтобы создать маршрут для аутентификации:
<?php add_action('rest_api_init', function () { register_rest_route('myplugin/v1', '/authenticate', array( 'methods' => 'POST', 'callback' => 'myplugin_authenticate' )); }); function myplugin_authenticate($data) { require_once('authenticate.php'); } ?>
5. Теперь у вас есть маршрут /myplugin/v1/authenticate
, который выполняет аутентификацию при отправке POST-запроса с параметрами username
и password
. Если аутентификация прошла успешно, в ответ будет возвращен JWT токен.
6. Вы можете использовать этот токен для аутентификации в вашем клиентском приложении. Для этого в каждом запросе к WP REST API необходимо добавить заголовок Authorization
, содержащий значение Bearer [токен]
, где [токен]
- это JWT токен, полученный после успешной аутентификации.
Пример использования JWT токена для аутентификации в запросе выглядит следующим образом:
const token = 'your_token'; // Замените на ваш JWT токен fetch('http://example.com/wp-json/wp/v2/posts', { method: 'GET', headers: { 'Authorization': `Bearer ${token}` } }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
Таким образом, вы реализовали аутентификацию в PHP файле при использовании WP REST API с помощью JWT токенов. Это обеспечивает безопасность ваших запросов и сохраняет пользовательские данные в зашифрованном виде.