2011-02-09 2 views
1

У меня есть приложение Java, размещенное в том же домене, что и сайт Drupal. Это приложение Java получает запрос клиента от браузера (поэтому я получаю доступ ко всем файлам cookie). Можно ли использовать файлы cookie, которые я получаю в приложении Java, чтобы проверить, зарегистрирован ли клиент во Drupal из того же браузера?Доступ к зарегистрированному пользователю Drupal из приложения Java

Я подумал об использовании xmlrpc из приложения Java для выполнения запроса к модулю сервисов Drupal, но я не смог найти способ получить информацию о том, что в настоящее время вошел пользователь, предоставляющий данные cookie.

Любые идеи?

Большое спасибо.

PS: Я использую только что установленный Drupal 7. Если у вас есть Drupal 6, то он выполнит эту работу. Спасибо.

ответ

0

Ну, если вы можете получить идентификатор SESSION, вы можете нажать таблицу сеансов и посмотреть, есть ли какая-либо строка в таблице с одинаковым sid (SESSION id = sid). Если uid не равен 0, пользователь вошел в систему, и вы можете посмотреть, кто они оттуда.

+0

Спасибо вам за ответ! Мне было интересно, есть ли способ без необходимости прямого доступа к БД. Я предпочел бы использовать некоторый API, потому что схема БД может меняться между обновлениями ... –

+0

@ user610060 вы не сможете сделать это, не нажимая БД, потому что Drupal управляет всеми данными сеанса в базе данных, а не файлами и т. Д. при запуске бутстрапа он загружает объект пользователя на основе параметра в таблице сеанса, связанного с идентификатором SESSION. я не ожидаю, что схема БД будет обновлена, пока все еще в той же версии, но это все еще зависит от вас ... – mikesir87

0

Немного поздно с моим ответом, но я бы рекомендовал написать модуль для Drupal, который подключается к его возможностям XML-RPC и выполняет эту работу за вас.

Другими словами, вы должны сделать запрос XML-RPC от вашего Java-приложения (http://ws.apache.org/xmlrpc/client.html) к пути на вашем Drupal-сайте, контролируемом модулем (скажем, 'example.com/user/is-logged-in'). Модуль Drupal «контролирует» этот путь и получает все запросы. Оттуда простую задачу для модуля Drupal сделать запрос к базе данных, чтобы выяснить, связан ли сеанс с зарегистрированным пользователем (если связанный пользователь равен 0, то пользователь не вошел в систему - в противном случае пользователь регистрируется в). Затем модуль Drupal просто возвращает true или false (если это желательно или более подробный массив деталей пользователя).

Я скоро буду работать над подобным случаем и, вероятно, пойдет по этому пути. В моем случае у меня есть сайт Drupal, который предлагает загрузку файлов. Загрузка должна выполняться через сервлет Java, но только пользователям, которые вошли в систему, должно быть разрешено загружаться. Таким образом, сервлет свяжется с сайтом Drupal, чтобы проверить, зарегистрирован ли пользователь с идентификатором сеанса, указанным в cookie, и затем определит, начнется загрузка или нет.

Другими словами:

Java -> Запрос XML-RPC -> Drupal сайта -> ответ XML-RPC -> Java.

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