Drupal 7.xx - 如何检查用户身份验证并允许访问与 Drupal 一起使用的自定义 Web 应用程序 运行?

Drupal 7.xx - how can I check for user auth and allow access to a custom web application running alongside Drupal?

我有一个自定义 PHP 网络应用程序,我 运行 位于 Drupal 站点根目录之外的文件夹中。

我希望做的是只允许访问此自定义 PHP 网络应用程序 -- /folder/mycoolapp.php -- 当用户登录到 Drupal 站点时.

目前,我拥有的是一个基本的 drupal 'page',访问时会检查

global $user; 

特定访问的数组 'role',我也可能使用值

$user[login] => 1538264018

检查用户最近是否登录,作为限制访问网络应用程序的一种方式。

我考虑过仅依靠引荐来源网址(确保它始终与我服务器上的特定/单个页面(Drupal 页面)匹配以允许访问——但我很确定引荐来源网址可以被欺骗。

这里的问题是我可以做些什么来拥有我通过

加载的自定义 Web 应用程序 (PHP)
header('Location: /path/to/mycoolapp.php');

只显示有效登录用户?

我尝试访问自定义 PHP 页面中的 $user 对象,但没有成功。

我尝试探索一种引用 SID 以检索当前 'Session' 的方法,但也无法使它起作用。

我在这里看到 2 个解决方案:

  1. 创建自定义 drupal 页面并向其中添加自定义代码,以生成页面内容。这样你就必须 "embed" 你的应用程序进入 drupal:

    /**

    • 实现 hook_menu()。 */ 函数 modulename_menu() {

      $items['your/special/path'] = 数组( 'type' => MENU_NORMAL_ITEM, 'title' => t('Title'), 'description' => 'My custom and very special page', 'page callback' => 'modulename_special_page', 'access callback' => 'user_access', 'access arguments' => 数组('access content'), );

      return $项; }

    /**

    • 页面回调。 */ 函数 modulename_special_page() { $内容='Hello World'; // ... 在此处嵌入您的自定义代码; return $内容; }

    查看:https://drupal.stackexchange.com/questions/81539/add-custom-page

  2. 在你的脚本开头包含 drupal 的 bootstrap 然后你可以使用 drupal 的系统,检查用户是否登录和类似的。类似于:

    require_once './includes/bootstrap.inc'; // 假设您的脚本与 Drupal 的 index.php 在同一个文件夹中 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