跳转到主要内容
一路上有亮 提交于 8 March 2012

原文链接:http://drupal.org/node/639916

 

安全权限禁止用户界面的创建和分配角色和权限。

安全权限是一个先进的安全模块为Drupal 7。禁用编辑屏幕上的角色和权限,并让所有的用户角色和权限,可以通过代码来处理。这增加了一个额外的安全层,作为网站的权限,可以不再是意外错误配置。

该模块的设计灵感Plone的平台的安全模式。见,特别是“问题A2:破碎的访问控制在Plone的文档。

----  1。用例

该模块设计的情况下,你想控制, 仅在开发环境中的角色和权限。完全启用时,该模块 将使它使直播现场,不能修改,除非它的权限, 通过代码。

它可能是足够的,对于大多数用户只需启用此模块在现场 站点,禁用不再需要它时,它。

----  2。安装

在安装此模块之前,您应该配置 您认为合适的站点角色和权限。安装和配置这个模块后, 对这些设置进行更改,只能通过代码。

在安装此模块将有两个直接影响:

  1. 权限将不再通过用户界面编辑。
  2. 角色将不再是通过用户界面编辑。

许多网站上,这是足够的。然而,先进的安全,你 有几个产生额外的选项。有关详细信息,请参阅第3和第4。

模块也将添加到您的网站,“出口许可 定义“ 权限。此权限应给予信任的角色,然后再 继续。

与此权限的用户可以配置该模块,并可以导出 代码的网站的角色和权限。

----  3。出口设置代码

给您的帐户 作为网站维护用户定义的模块或日志“出口许可定义的权限。

查找链接>>安全权限下的人民和权限

单击“导出”权限“选项卡。应采取的形式 充满PHP代码,一个大的文本区域。

复制代码。它放置在一个模块文件,并 根据模块的名称命名的钩子。通常情况下,这将是这样的:

 

  custom_secure_permissions_roles() custom_secure_permissions($role)

保存到你的模块文件中的代码。

现在,您可以配置安全权限模块运行。

----  4。配置模块

对于这个模块的先进功能,你必须导出你的角色和权限 代码。因为这个不能做的模块安装之前,该模块 将不会执行其规则,直到你告诉它这样做。

要激活模块,定位到:

管理配置和模块>人民和权限>安全 权限

在这里,你可以告诉权限的安全模块,如何做人。你有7个 可设置的选项。

“启用”  检查安全权限来激活先进的功能模块的 设置时,该模块将重建角色和权限的每一个 模块启用或禁用。检查此选项表示 将所有网站的角色和权限管理代码。默认为OFF。

“刷新上重建的”  检查有模块负载Drupal的默认权限为 匿名用户和经过身份验证的用户角色权限 重建时的默认权限。默认为OFF。

“权限页面 检查允许管理员查看权限“页面显示。 禁用此选项将阻止 所有用户看到的权限定义。预设值是ON。

'显示角色页“  检查允许由管理员角色“页查看。 禁用此选项将阻止 所有用户看到的角色定义。预设值是ON。

“显示权限更新”  检查时显示信息安全权限重置网站的权限。 默认是。

使用行政作用的 检查,包括从网站的管理角色。 “管理员”角色的船舶与Drupal,并拥有所有的网站权限。 如果取消选中此选项,这个角色将被删除。预设值是ON。

“行政角色名'  设置行政的角色,你想使用。的名称, 如“使用管理角色”被禁用,不使用这个值, 默认为“管理员”。通常情况下,你不应该改变这个值。 注意:如果使用翻译,这个字符串不应该被翻译通过这个 设置。

----  5。API钩子

通过使用两个API钩子模块的功能,如下所述。要使用这些 功能,你必须放置在一个自定义的模块文件,并把它们命名为正确。

导出功能会为您生成这些挂钩。这里所描述的API  开发。

----  5.1 hook_secure_permissions_roles()

定义网站所使用的角色。这些键的作用的唯一性 的名称,因为我们不能保证各站点的角色ID。

警告:如果不实现这个钩子,该模块将重置您的站点 角色与Drupal的默认安装船的角色。

注意:该模块实现这个钩子,以确保“匿名用户”  和“身份验证的用户”角色始终存在。

如果“使用管理角色”设置为TRUE,该模块也将保持 行政的作用,所有的网站权限。

钩子返回一个独特的角色名称的简单位置阵列。

<?php   function example_secure_permissions_roles() {     return array(       'editor',       'producer',     );   } ?>

----  5.2 hook_secure_permissions的(美元的作用)

定义分配给每个角色的权限。通常情况下,您将实现所有 权限,为您的网站在这个钩子。

此挂钩,美元的角色字符串作为参数。你应该响应与 该角色的权限适当补助。你应该只返回 为TRUE的赠款。

<?php function example_secure_permissions($role) {     $permissions = array(       'anonymous user' => array(         'access content',         'use text format 1',       ),       'authenticated user' => array(         'access comments',         'access content',         'post comments',         'post comments without approval',         'use text format 1',       ),       'editor' => array(         'bypass node access',         'administer nodes',       ),       'producer' => array(         'create page content',         'edit any page content',       ),     );     if (isset($permissions[$role])) {       return $permissions[$role];     }   } ?> ?>

注:这里推荐使用isset()函数,是 每个角色,因为钩子将触发一次,并有可能在所有情况下,你的模块将不会回应。

注:如果配置这样做,模块将返回默认的权限 定义由Drupal的安装。禁用“上刷新的默认权限 设置重建“禁用此行为。

----  6。Drupal的6支持

此模块为Drupal 7写。它是回迁到Drupal 6,使用权限的API模块。