2016-07-14 2 views
0

Я использую WordPress как мой интерфейс для администрирования пользователей, обработки регистрации, входа в систему, проверки подлинности и выхода из системы. Пользователи регистрируются и регистрируются с помощью WordPress.Как прокси-сервер запрашивает данные аутентификации пользователя WordPress на другом сервере в том же домене?

Сайт имеет URL-адреса, обслуживаемые сервером backend mod_perl в том же домене. Когда пользователь нажимает ссылку, которая ссылается на сервер backend, я хотел бы, чтобы сервер frontend, прокси, передал аутентифицированное имя пользователя или учетные данные для входа на серверный сервер. Бэкэнд-сервер будет использовать эти учетные данные для авторизации. Я могу представить несколько способов сделать это.

  1. Может сервер бэкенд считывает имя пользователя из WordPress печенья. Заголовок HTTP-заголовка Cookie отображается на сервере-сервере журналов (я специально настроил это как средство отладки.) Возможно ли это , один сервер читает файл cookie, написанный другим сервером (в том же домене)?

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

    WordPress SSO/OAuth может быть возможным, но моя ОС X El Capitan среда разработки представляет собой еще один уровень проблем для .

Интерфейс Apache2.4, PHP 5.5.34, WordPress 4.5.3. Модули Apache можно добавлять и удалять как DSO. Бэкэнд - Apache 2.4, mod_perl 2.0.10, MySQL 5.7.

Оба сервера работают в одном экземпляре AWS с AWS Linux. (Я начинаю думать, что AWS Linux был неправильным выбором для меня, но это целая нить.)

У меня есть навыки Apache, MySQL и Perl. PHP и Javascript я так и не узнал.

+0

Вы также можете использовать таблицу wp_users для аутентификации на сервере. – Lonkey

+0

@ Lonkey.Да, я тоже подумал об этом, и если приемлемый способ передать аутентификацию из внешнего интерфейса на бэкэнд не может быть найден, мне все равно придется. Но для этого просто кажется, что они сажают обе ноги на скользком склоне ручного повторного изобретения и где это закончится? Я предпочел повторно использовать инфраструктуру WordPress, чтобы использовать ее надежность и масштабируемость, а также избегать группировки или ортогональной разработки. –

+0

ОК. Самый простой способ (возможно, это тоже единственный практический) - использовать PHP, потому что wordpress - это приложение PHP, которое действительно является проблемой для вас. Используя PHP, вы можете просто использовать функцию is_user_logged_in(). Если функция вернет true, будет загружена страница с серверного сервера. В противном случае вы будете перенаправлены на страницу входа в WordPress. – Lonkey

ответ

0

Простейший способ (возможно, это тоже единственный практический вариант) - использовать PHP, потому что wordpress - это приложение PHP, которое действительно является проблемой для вас. Тем не менее, у меня есть простой пример для вас:

PHP страницу на вашем WordPress сайте:

<?php 
require('path/to/wp-blog-header.php'); 

if (is_user_logged_in()) { 
    $user = wp_get_current_user(); 
    header("Location:backend.php?user=".$user); 
    exit(); 
} else { 
    echo "User is not logged in!"; 
}; 
?> 

PHP страницу на серверной сервере:

<?php 
if (isset($_GET['user'])) { 
    $user = $_GET['user']; 
    // do something with $user. 
} else { 
    echo "No user passed!"; 
} 
?> 

Это просто использует два встроенных функций Wordpress. Сначала функция is_user_logged_in() используется для определения того, вошел ли пользователь в систему. Если функция возвращает true, вызывается функция wp_get_current_user(), чтобы передать имя пользователя на php-страницу бэкэнд-сервера с использованием метода GET. Затем серверный сервер проверяет прошедшую переменную.

Обратите внимание, что эта простая процедура является исключительно иллюстративной и чрезвычайно опасной!

+0

Большое спасибо @Lonkey. Я проведу несколько подходов, используя ваш пример в качестве рамки. Ура! –

Смежные вопросы