【问题标题】:setting page access permissions in drupal在drupal中设置页面访问权限
【发布时间】:2009-09-19 10:09:36
【问题描述】:

我是 drupal 的新手。我猜这是一个非常愚蠢的问题。 我启用了 PHP 过滤器模块,这样我就可以创建一个包含我自己的 PHP 代码的新页面。我希望只有经过身份验证的用户才能访问这个特定页面,匿名用户看不到。我怎样才能做到这一点?我可以在 drupal 中为各个页面设置权限吗?或者是否可以通过PHP代码识别出匿名用户正在尝试访问当前页面?

【问题讨论】:

    标签: drupal


    【解决方案1】:

    既然您提到您是 Drupal 的新手,请注意 - 对您的自定义代码使用 PHP 过滤器被认为是不好的做法。这是一种黑客攻击,是一个安全问题。

    编写自定义模块要好得多,它可以实现自己的自定义权限,您可以检查等等。有一个很好的sample module,您可以查看它的外观。显然,也请查看手册。真的没有听起来那么难。

    但回到你的问题。您可以在 PHP 过滤的页面中添加以下行:

    global $user;
    

    这将使您能够访问代表当前用户的对象。 $user->roles 是一个表示用户角色的数组。您可以检查它是否有 authenticated user(或者稍微好一点 - 您创建的自定义角色)。

    【讨论】:

    • 谢谢 Eli :) 对不起,我很晚才感谢你。我非常认真地对待您的警告 :) 您的建议和 Jordi 的代码使它变得非常容易!尽管我很快将其替换为“简单访问”模块。它真的像它所说的那样简单,并且完全符合我的要求。将来我将使用您的示例模块链接来创建自己的模块。这是一个很好的开端!
    【解决方案2】:

    阅读上述答案后,您还可以考虑现成的simple access 模块。它符合我的要求,如果您要避免 PHP 过滤并且不想创建自己的模块(无论出于何种原因),您可以查看simple access。

    【讨论】:

      【解决方案3】:

      要防止匿名用户访问页面,您可以使用以下 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

      【讨论】:

        猜你喜欢
        • 2023-03-22
        • 1970-01-01
        • 2015-11-18
        • 2013-06-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多