这可能很简单,但我是Drupal的新手.我工作的组织不久前转而使用Drupal,但是在各种外部PHP文件中仍然存在一些遗留代码,这些代码在Drupal中转换为工作会很麻烦.
但是,能够根据针对Drupal进行身份验证的人限制对其中某些页面的访问权限,这将是非常好的.(有些页面是管理性的,例如,任何知道URL的人都可以看到它们.是的,设计很糟糕,但那是我继承的......)
如何从外部PHP文件中检查Drupal,以查看访问给定页面的人是否已通过身份验证?
我会跟Rimians建议在Drupal本身注册URL(+1),但作为替代方案,你可以"手动"引导Drupal并在其后直接从其他脚本检查用户权限:
// initialize Drupal // TODO: adjust path according to placement of script (might need to change to Drupal directory first) require './includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); // check user access rights // TODO: Adjust to the permission you want to restrict to, e.g. 'access content' or whatever if (!user_access('administer nodes')) { // Insufficient rights, say so drupal_access_denied(); exit(0); } // ... call legacy script
注意: Drupal在引导期间做了相当多的工作,包括一些操作和全局变量的设置,因此请务必仔细检查遗留代码的干扰/冲突(也适用于Rimians建议).
如果您只想限制对经过身份验证的用户的访问,则可以使用以下user_access()
命令替换该呼叫user_is_logged_in()
.如果要按角色检查,可以添加global $user;
并检查$user->roles
数组的内容
您需要在菜单路由器中包含这些URL,以便Drupal可以引导并检查您的权限.然后你需要找到你的第三方PHP作为包含文件或可能通过一个接口运行.
需要一些聪明的定制工作,但可能不太难.:)