Я працюю над додатком 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 автентичності все-таки дійсний. Але, як здається, цього зробити не можна, оскільки wp_validate_auth_cookie () завжди виходить з ладу, навіть якщо передаються файли cookie даних, які зареєстровані користувачем. Іншим рішенням може бути розробка плагіна, який зберігає sessionid та userid у таблиці, яку легко можна буде запитати сервлетами. А може, є інше рішення ...