【发布时间】:2009-09-19 10:09:36
【问题描述】:
我是 drupal 的新手。我猜这是一个非常愚蠢的问题。 我启用了 PHP 过滤器模块,这样我就可以创建一个包含我自己的 PHP 代码的新页面。我希望只有经过身份验证的用户才能访问这个特定页面,匿名用户看不到。我怎样才能做到这一点?我可以在 drupal 中为各个页面设置权限吗?或者是否可以通过PHP代码识别出匿名用户正在尝试访问当前页面?
【问题讨论】:
标签: drupal
我是 drupal 的新手。我猜这是一个非常愚蠢的问题。 我启用了 PHP 过滤器模块,这样我就可以创建一个包含我自己的 PHP 代码的新页面。我希望只有经过身份验证的用户才能访问这个特定页面,匿名用户看不到。我怎样才能做到这一点?我可以在 drupal 中为各个页面设置权限吗?或者是否可以通过PHP代码识别出匿名用户正在尝试访问当前页面?
【问题讨论】:
标签: drupal
既然您提到您是 Drupal 的新手,请注意 - 对您的自定义代码使用 PHP 过滤器被认为是不好的做法。这是一种黑客攻击,是一个安全问题。
编写自定义模块要好得多,它可以实现自己的自定义权限,您可以检查等等。有一个很好的sample module,您可以查看它的外观。显然,也请查看手册。真的没有听起来那么难。
但回到你的问题。您可以在 PHP 过滤的页面中添加以下行:
global $user;
这将使您能够访问代表当前用户的对象。 $user->roles 是一个表示用户角色的数组。您可以检查它是否有 authenticated user(或者稍微好一点 - 您创建的自定义角色)。
【讨论】:
阅读上述答案后,您还可以考虑现成的simple access 模块。它符合我的要求,如果您要避免 PHP 过滤并且不想创建自己的模块(无论出于何种原因),您可以查看simple access。
【讨论】:
要防止匿名用户访问页面,您可以使用以下 php 代码:
<?php
// we have to access the content of the global-scope variable $user
global $user;
//Checking if the user is registered
if (in_array('authenticated user', $user->roles)==FALSE) {
header('Location:/content/restrictedaccess') ;
}
?>
//页面内容
-- 有关我如何使用 Drupal 创建网站的更多信息:http://modeling-languages.com/content/how-i-created-site-drupal
【讨论】: