Drupal 7.xx - как я могу проверить аутентификацию пользователя и разрешить доступ к пользовательскому веб-приложению, работающему вместе с Drupal? - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть пользовательское веб-приложение PHP, которое я запускаю в папке вне корня сайтов Drupal.

Я надеюсь разрешить ТОЛЬКО доступ к этому пользовательскому веб-приложению PHP - /folder/mycoolapp.php - когда пользователь заходит на сайт Drupal.

ДляТеперь у меня есть базовая страница друпала, которая при обращении проверяет массив

global $user; 

на определенную роль доступа, и я также могу использовать значение

$user[login] => 1538264018

чтобы проверить, что пользователь недавно вошел в систему как средство ограничения доступа к веб-приложению.

Я подумал о том, чтобы просто полагаться на реферера (убедившись, что он всегда соответствует определенной / отдельной странице на моем сервере (страницы Drupal), чтобы разрешить доступ, но я вполне уверен, что реферер может быть подделан.

Вопрос в том, что я могу сделать, чтобы мое пользовательское веб-приложение (PHP) загружалось через

header('Location: /path/to/mycoolapp.php');

показывать только для действительных вошедших в систему пользователей?

Я попытался получить доступ к объекту $ user на пользовательской странице PHP, но без кубиков.

Я попытался найти способ ссылкив SID, чтобы получить текущий сеанс, но не смог получитьчто работать тоже.

1 Ответ

0 голосов
/ 01 октября 2018

Здесь я вижу 2 решения:

  1. Чтобы создать пользовательскую страницу drupal и добавить свой собственный код, чтобы сгенерировать содержимое страницы.Таким образом, вам придется «встраивать» ваше приложение в drupal:

    / **

    • Реализует hook_menu ().* / function modulename_menu () {

      $ items ['your / special / path'] = массив ('type' => MENU_NORMAL_ITEM, 'title' => t ('Title'), 'description' => «Моя пользовательская и очень особенная страница», «обратный вызов страницы» => «modulename_special_page», «обратный вызов доступа» => «user_access», «аргументы доступа» => массив («доступ к содержимому»),);

      вернуть $ предметов;}

    / **

    • Обратный вызов страницы.* / function modulename_special_page () {$ content = 'Hello World';// ... вставляем ваш пользовательский код сюда;вернуть $ content;}

    Проверить: https://drupal.stackexchange.com/questions/81539/add-custom-page

  2. Чтобы включить начальную загрузку drupal в начале вашего скрипта и после этого вы можете использовать систему drupal, проверьте, вошел ли пользователь в систему, ианалогичный.Что-то вроде:

    require_once './includes/bootstrap.inc';// при условии, что ваш скрипт находится в той же папке, что и index.php Drupal drupal_bootstrap (DRUPAL_BOOTSTRAP_FULL);// теперь у вас есть доступ ко всем функциям Drupal

.. как описано в этой статье: https://www.drupal.org/forum/support/module-development-and-code-questions/2008-05-19/how-to-use-drupal-api-outside-of

...