Я работаю над приложением ajax, которое будет встроено в страницу WordPress. Приложение ajax обменивается данными с сервлетами, работающими на tomcat. Теперь сервлетам нужен способ определить, приходит ли запрос от пользователя, который вошел в WordPress. И если пользователь вошел в систему, сервлеты также должны быть в состоянии определить идентификатор пользователя, чтобы иметь возможность запрашивать базу данных. Если пользователь не вошел в систему, запрос будет отклонен.
Другими словами, мне нужно разрешить сервлету выполнять запрос, только если пользователь, вызвавший запрос, вошел в WordPress (версия 3.3.x). И сервлет (tomcat), и wordpress (apache2) работают на одной физической машине и совместно используют одну и ту же базу данных.
Теоретически это можно легко решить, выполнив следующее:
- Во время входа в WordPress некоторые пользовательские токены сохраняются в переменной javascript.
- Приложение ajax перенаправляет токен пользователя сервлетам при каждом вызове.
- Сервлеты используют токен для запроса WordPress, если он действителен (т. Е. Если пользователь вошел в систему), и выполняют или отклоняют запрос.
Вопрос в том, как это можно реализовать на стороне WordPress?
Потому что то, что делает теорию настолько сложной, это то, что я еще не занимался программированием на php.
Сначала я подумал о том, чтобы передать cookie-файл wordpress_logged_in (auth) сервлету и позволить сервлету запрашивать wordpress, если cookie-файл auth все еще действителен. Но, как кажется, это невозможно сделать, так как wp_validate_auth_cookie () всегда терпит неудачу, даже если передаются cookie-данные вошедшего в систему пользователя. Другое решение может заключаться в разработке плагина, который хранит идентификатор сеанса и идентификатор пользователя в таблице, к которой легко могут быть запрошены сервлеты. Или, может быть, есть другое решение ...