【问题标题】:Can someone explain "access arguments" in Drupal?有人可以解释 Drupal 中的“访问参数”吗?
【发布时间】:2010-06-10 22:25:30
【问题描述】:

有人可以解释 Drupal 中的“访问参数”吗?相信我,我试过用谷歌搜索它,但我并没有清楚地掌握它。

【问题讨论】:

    标签: drupal drupal-6


    【解决方案1】:

    在 /admin/user/permissions 中,您会看到很多访问选项。它们来自 drupal 模块,并让站点管理员将特定权限分配给用户角色(drupal 默认提供“匿名”和“注册”角色)。 模块通过hook_perm 声明它们,它们很容易使用:

    function mymodulename_perm {
    return array('use custom feature', 'use the other custom feature');
    }

    它们会出现在那里,随时可以使用。现在,在您的任何功能中,您都可以通过user_access 检查用户访问权限,这同样易于使用:

    if (user_access('use custom feature')) {
      //do something
    }

    【讨论】:

    • 如果您想知道如何在 hook_menu 上使用它,只需在您的菜单项上设置“访问参数”=>“使用自定义功能”。 “访问回调”默认设置为 user_access,但可能会被覆盖(查看api.drupal.org/api/function/hook_menu/6 了解更多详细信息)
    • 对于 Drupal 7,该函数称为 hook_permission
    • 嗨,你能看看我的问题吗,它有些相似,但我使用的是 drupal 7 stackoverflow.com/q/22832569/1877909
    【解决方案2】:

    访问参数是传递给检查用户是否可以访问菜单的函数的参数。

    给定一个菜单回调定义如下

      $items['blog/feed'] = array(
        'title' => 'RSS feed',
        'page callback' => 'blog_feed',
        'access callback' => 'custom_module_blog_access',
        'access arguments' => array('feed'),
        'type' => MENU_CALLBACK,
      );
    

    函数custom_module_blog_access() 将被称为custom_module_blog_access('feed')。如果函数返回TRUE,那么用户将被授予访问菜单回调的权限;不同的是,用户将看到错误 403 页面(访问被拒绝)。 通常情况下,访问回调是没有定义的,默认情况下 Drupal 会使用user_access()

    【讨论】:

    • 'type' => MENU_CALLBACK, 你能告诉我更多关于 MENU_CALLBACK ...何时以及如何使用它
    • 这是一个不同的问题。 :) 先阅读hook_menu(),如果不清楚MENU_CALLBACK 的作用,请提出问题。
    • 感谢您的回复;)但已经对此进行了探索并找到了答案:)
    【解决方案3】:

    对于使用预定义的有效权限,如系统权限:

    1. 检查有效权限列表:/admin/people/permissions

    1. 复制权限字符串并将其添加到您的“访问参数”数组中:

      function mymodule_menu() {
          $items['admin/config/mymodule_config'] = [
              'title' => 'MyModule',
              'page callback' => 'drupal_get_form',
              'access callback' => '_mymodule_admin_form',
              'access arguments' => array('administer site configuration'),
              'type' => MENU_CALLBACK
        ];
      
        return $items;
      }
      

    参考:Valid access arguments

    【讨论】:

      猜你喜欢
      • 2013-09-20
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      • 2010-12-13
      • 1970-01-01
      相关资源
      最近更新 更多