2010-06-10 38 views

回答

13

在/ admin/user /权限中,您将看到很多访问选项。他们来自于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 
}
+3

,如果你想知道如何在hook_menu利用这一点,只需设置“接入参数” =>“使用自定义功能在您的菜单项。 '访问回调'默认设置为user_access,但可能会被覆盖(有关更多详细信息,请参阅http://api.drupal.org/api/function/hook_menu/6) – 2010-06-10 23:06:07

+3

对于Drupal 7,函数称为[hook_permission]( https://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_permission/7) – AvL 2013-06-01 12:47:39

+0

嗨,你可以看看我的问题,它的一些相似,但我使用的是drupal 7 http ://stackoverflow.com/q/22832569/1877909 – Hitesh 2014-04-03 09:00:58

9

接入参数传递给来检查,如果用户访问一个菜单中的函数的参数。

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

$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()

+0

''type'=> MENU_CALLBACK,'你能告诉我更多关于MENU_CALLBACK ...何时以及如何使用它 – Hitesh 2014-04-03 07:02:04

+0

这是一个不同的问题。 ':)'首先读取['hook_menu()'](https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_menu/7),然后问一个问题if目前还不清楚“MENU_CALLBACK”的功能。 – kiamlaluno 2014-12-15 20:03:57

+0

感谢您的回应;)但已经探讨了,发现答案:) – Hitesh 2014-12-16 05:23:14

0

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

  1. 检查有效的权限的列表:/管理/人/权限

D7 - Permission by Role

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

    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