五、用户、角色、权限

是时候来看看运行 Drupal 网站的一个完全不同的方面了。到目前为止,我们一直专注于添加和组织网站的基本功能。我们还没有考虑如何访问此功能,或者由谁访问。随着网站的发展,你很可能会觉得有必要将某些职责委托给不同的人。或者,您可以组织一个团队来处理站点的特定方面。无论您需要什么,在某个阶段,您将不得不决定谁可以做什么,Drupal 的优秀人员已经确保这是可能的。

与前一章相同,让 Drupal 简化访问控制策略的实现并不意味着任务很琐碎。为了创建一个复杂的、最重要的是有效的策略来控制对网站的访问,仍然有很多想法需要在幕后进行。因此,我们将花一些时间探索各种可用选项的后果,而不是简单地列出它们。对您的访问控制策略采取全面的方法将确保您不会最终遇到任何令人不快的意外。

由于我们现在已经与 Drupal 合作了一段时间,我们将开始稍微展开我们的翅膀,并使用贡献模块提供的一些稍微更高级的方法。具体而言,本章将研究以下主题:

  • 规划访问策略
  • 角色
  • 权限,包括使用分类访问控制模块
  • 使用者
  • 访问规则

在我们继续之前,值得指出的是,目前您很可能使用管理用户(用户编号 1)来满足站点的所有开发需求。这是绝对好的,但是一旦您完成了对站点的任何重大更改,您就应该开始使用一个普通的管理用户,该用户只有完成日常任务所需的权限。下一节将重点介绍用户访问背后的一般理念,这应该清楚地说明原因。

规划访问策略

当你考虑你的站点应该如何工作时,你需要关注你自己、其他社区成员甚至匿名用户的需求。换句话说,是否会有一个版主团队致力于确保网站内容符合良好品味的要求,避免使用等同于仇恨言论的内容等等?是否会有允许创建和维护自己内容的主题专家?匿名访客会被允许参与多少活动,或者他们会被强迫只在橱窗里购物而无法贡献自己的力量?

你们中的一些人可能会觉得,你们希望网站的使用能与社区有机地发展,所以你们希望自己的方法非常灵活。然而,您可以认为您的站点和访问策略已经很灵活,在 Drupal 中进行更改是多么容易。这意味着,从一开始,没有人可以免于制定适当的访问控制计划。如果你需要随着时间的推移而改变它,那就这样吧,但至少从一开始就有一套连贯的角色。

那么我们从哪里开始呢?可直接适用于我国局势的首要安全规则是:

授予用户足够的权限以完成预期任务,而不是更多!

我们的整个方法将受这条规则的约束。经过一点思考,你应该能够明白为什么这是如此重要。显然,任何人都不希望匿名用户能够修改受人尊敬的行业专家的个人博客。这意味着每种类型的用户都应该拥有严格控制的权限,有效地阻止他们在其角色范围之外的行为。

这样做的一个结果是,您会发现创建更多的特定角色比创建一两个通用角色更好,并允许每个人使用这些“捕获所有”权限。Drupal 为我们提供了对用户可以完成的任务的细粒度控制,您应该充分利用这个工具。使用下图来考虑您的访问控制可能会有所帮助(这不一定代表您站点上的实际角色,只是一个示例):

Planning an Access Policy

阴影区域表示站点可用的权限总数。此集合中包含默认存在的各种角色,如匿名用户角色,或者您创建的角色,以满足网站在这种情况下需要的不同类型的用户博客作者用户论坛主持人用户角色。然后,每个角色可以包含任意数量的用户。

从前面的图中可以看到,匿名用户拥有最小的权限集,因为他们拥有整个图中最小的区域。这组权限完全由论坛版主用户博客作者用户封装——这意味着论坛版主和博客作者可以做匿名用户所做的一切,还有更多。

当然,博客作者的职责略有不同。虽然他们与论坛管理员共享一些通用权限,但他们也有一些自己的权限。您作为主用户或管理用户的权限包含整个集合,因为不应该有任何您无法控制的内容。

由您决定哪些角色最适合该站点,但在您尝试此操作之前,请务必询问:什么是角色以及如何首先使用角色?为了回答这个问题,让我们更详细地看一看事物的实际一面。

角色

这可能看起来有点奇怪,我们不是从讨论用户开始实际的访问控制。毕竟,这都是关于用户可以不能做什么!立即谈论用户的问题在于,单个用户的关注点太窄,我们可以通过使用角色从更广阔的角度了解更多关于控制访问的信息。一旦我们了解了关于角色的所有知识,与用户一起工作就变成了一件小事。

在 Drupal 中,用户角色类似于戏剧中的角色。在戏剧中,演员必须始终忠于自己的角色——换句话说,有一种明确的行为方式,角色永远不会偏离(无论哪个演员扮演角色),否则幻觉就会破灭。同样,Drupal 允许定义角色来决定用户的行为。在 Drupal 中创建角色非常简单!只需点击管理下的访问控制链接,选择角色页签,即可弹出如下简单界面:

Roles

如您所见,我们已经默认定义了两个角色,匿名用户认证用户。无法更改这些,因此将操作列永久设置为锁定。首先,匿名用户(即未登录而浏览网站的任何用户)设置的权限非常少,您很可能希望以这种方式保留该权限,尽管可以为他们提供任何和所有权限。

类似地,默认情况下,经过身份验证的用户仅比匿名用户拥有更多的权限,将这些权限保持在最低限度也是明智的。稍后我们将了解如何决定谁应该拥有哪些权限。

要添加新角色,只需输入角色名称并单击添加角色,即可完成!但您想添加什么名称?这就是问题所在!如果您不确定使用什么名称,那么很可能您没有明确定义您希望该角色的用途。为了了解这是如何做到的,让我们假设Contechst 野生动物社区需要一个论坛主持人,除了能够直接在保护论坛上工作外,他在任何方面都是普通用户(以减轻管理员的一些责任)创建新主题并在必要时编辑内容。

所以,为了让事情顺利进行,我们输入论坛版主用户并点击添加角色——实际上,在这种情况下,你甚至可能想更具体一些,使用类似保护论坛版主用户的东西,但你得到了一般的想法。就这样!我们已成功添加角色。现在,当您看到角色页面时,您应该能够查看新角色,并在页面右侧显示编辑选项。您可以点击编辑更改角色名称或完全删除。

我们的工作才刚刚开始,因为现在我们需要授予或拒绝论坛主持人用户角色所需的各种权限,以便成功实现其目的。新角色一开始就没有任何权限。如果您仔细想想,这是有道理的,因为我们最不希望创建的角色只是发现它与管理用户具有相同的权限。

根据站点的需要,您可能需要添加几个角色。现在,让我们继续往下看,看看我们是如何通过设置权限来充实这个新角色的。

权限

要使用权限,请单击访问控制页面上的权限选项卡,您将看到类似于此的屏幕(请注意页面右侧新的论坛主持人用户角色):

Permissions

如您所见,此页面在左侧列中列出了所有可用权限,并允许您通过选中或取消选中相关列中的复选框来启用或禁用该权限。很容易看出,只需在列表中选择每个角色所需的权限。不那么容易的是,首先要确定哪些应该启用,哪些不应该启用。

请注意,左侧列表中给出的权限属于特定模块。这意味着,如果我们通过添加或删除模块来更改站点的设置,那么我们还必须更改此页面上的权限。这意味着:

大多数情况下,添加模块时,您需要确保按照您对该模块的要求设置权限,因为默认情况下不授予任何权限。

从上一个屏幕截图中显示的权限页面,我们还能学到什么?那么,每一个许可的确切含义是什么?有相当多的动词允许完全不同的动作。以下列出了更常见的通用模块,尽管您可能会发现偶尔会出现一个或两个其他模块,以满足特定模块的需要:

  • 管理:让用户能够影响模块的功能。例如,授予 locale 模块管理员权限意味着用户可以添加或删除语言、管理字符串,甚至导出 .po文件。此权限只能授予受信任的用户,而不能授予匿名用户。
  • 访问:让用户能够使用模块,而不会以任何方式影响模块。例如,授予评论模块的访问权限允许用户查看评论,而不必删除、编辑或回复评论。
  • 创建:让用户能够创建某种内容。例如,授予用户创建故事的权限允许用户这样做,但不允许用户编辑这些故事。
  • 编辑自己:让用户能够处理他们创建的内容。例如,授予故事模块编辑自己的权限意味着用户可以随意修改自己的故事。

还有其他特定于模块的权限可用,建议您仔细研究并理解您设置的任何新权限(大多数权限都是不言自明的)。

现在,由于默认角色的权限非常少,您可能希望在处理任何新角色的同时,看看这些用户可以做些什么。更可能的是,您希望允许匿名用户访问网站的大部分内容,而不允许他们以任何方式修改内容。我将把这些选择留给你。但是我们如何为论坛版主用户设置所需的权限呢?

如果我们查看权限页面上显示的权限列表,我们会看到以下与论坛相关的选项(目前,论坛版主用户权限是最外层一栏中的权限):

Permissions

启用这三个选项,然后测试提供了哪些新的权力,这将很快证明这并不是我们想要的。

如果您想知道如何实际测试,您需要注册一个新用户并将其分配给论坛主持人用户角色。以下关于用户的部分解释了如何创建新用户并对其进行正确管理,因此如果您不确定如何创建新用户,请快速跳转并检查,以便您有一个新用户可以使用。

以下几点可能会让你的生活更轻松:

提示

使用两个浏览器来测试你的网站!演示站点的开发机器有 IE 和 Firefox。为管理员保留一个浏览器,为匿名用户或其他用户保留另一个浏览器,以便测试更改。这将使您不必在测试新权限时登录和注销。

假设您乐于以这种或那种方式测试新权限,您会发现论坛主持人可以访问并使用所有论坛,我们希望将此特定用户仅限于与保护相关的主题。我们需要在其他模块中的某个模块中有更具体的吗?

查看剩余的权限,我们可以看到有一个管理节点选项—让我们试试。在保存和注销之前,禁用匿名用户的管理论坛选项,并为匿名用户启用管理节点选项。您现在会发现,通过选择主菜单中的内容链接,论坛管理员用户可以非常轻松地编辑到论坛的任何帖子那么,有什么问题?首先,该用户现在还可以配置网站上所有不同类型的内容,以及编辑任何类型的内容,包括其他人的博客。这种情况比第一次更糟!

哦,亲爱的,尽管我们现在对谁做什么有很大的控制权,但已经有迹象表明,如果没有其他地方的帮助,有些事情是不容易做到的。为了完成这项任务,我们需要使用我们在上一章下载并安装的分类访问控制模块,因为当前问题的解决方案在于强制 Drupal 定义可以根据其类别访问和操作内容的用户。

使用分类访问控制设置权限

假设您已启用此模块,请转到管理链接下的访问控制部分(您需要再次以管理员身份登录)。您应该注意到,此页面上有一个名为类别权限的新选项卡。此页面应包含可用角色的列表以及编辑其类别权限的能力。然而,由于您需要首先启用模块,因此它可能无法正常工作。如果是这种情况,则应显示以下链接:

Setting Permissions with Taxonomy Access Control

他们是老板!进入设置下的分类访问页面,启用模块。现在,当您在访问控制中查看类别权限页面时,您将看到可用角色的列表,可供您使用。单击此列表中的论坛主持人用户查看任何和所有类型的分类内容的权限(顺便说一句,如果您不确定内容分类和类别,请不要担心,所有这些将在以下几章中讨论),如下所示:

Setting Permissions with Taxonomy Access Control

这里有很多值得思考的事情!现在在管理部分的帮助下的分类访问有一个分类访问帮助页面,您应该一起阅读。让我们快速地看看所有这些选项在行动中也是如此。

可用的前三列选项为查看、更新删除。这些都是相当不言自明的,允许用户分别查看、处理或删除内容。下一个选项创建,允许用户将指定的术语固定到帖子中。列表使指定的术语显示在帖子页面、类别列表甚至面包屑导航中。确保启用了列表,如果希望该术语实际出现在页面中、页面上或页面周围,则禁用该术语可能会产生一些意外结果。

前三个选项有三个设置可供选择:

  • 允许(A):授予用户对任何给定类别的关联权限
  • 忽略(I):有效地拒绝用户相关的权限,但可以使用其他允许命令覆盖
  • 拒绝(D):拒绝用户对任何给定类别的关联权限

该列表中的第二个项目将我们带到一个关于优先权的重要问题:

拒绝指令优先于允许!

为什么这很重要?想想如果在某个阶段,一篇帖子链接到多个类别会发生什么(这种情况是可能的,我们将在本书的后面介绍)。如果权限设置为用户在一个词汇表中为一个术语设置了允许指令(词汇表和其他分类相关术语都在第 7 章关于高级内容的中进行了详细讨论,但拒绝在另一个中设置该术语,则以拒绝指令为准。这就是为什么忽略如此重要的原因,因为它允许您有效地拒绝一个类别中某个术语的许可,而不会影响其他类别。

只有当您确信某个角色永远不需要访问该术语时,才使用拒绝

每个词汇表顶部显示的下拉列表允许您生成影响整个列的通用语句。例如,您可能希望允许用户查看词汇表中的所有术语,而不必手动更改每个设置。如果是这种情况,只需从下拉列表中选择允许所有即可。下拉列表下方是默认选项,该选项会自动赋予该列中的任何新术语您在此处设置的权限。如果您不确定您在此处想要什么,请坚持忽略。

现在,如果您试图使用设置了默认权限的论坛主持人用户访问论坛,您很可能会失望:

Setting Permissions with Taxonomy Access Control

这确实是意料之中的(尽管我们知道论坛确实存在),因为默认情况下论坛主持人只设置了忽略指令。将您的页面设置为如下所示,并确保您的论坛主持人用户有权创建论坛主题编辑自己的论坛主题(在访问控制页面的权限选项卡上设置):

Setting Permissions with Taxonomy Access Control

点击保存类别权限获取这些设置,现在您可以尝试新的权限。具体来说,我们需要检查该用户是否能够执行预期的操作。预期的操作是什么?根据设置,我们希望用户只能访问保育集装箱内的商业捕鱼论坛。用户应该能够发布到这个论坛以及编辑这个论坛内的任何帖子(即使它们不是用户自己的帖子)。

从论坛主持人的角度来看论坛页面,我们得到如下信息:

Setting Permissions with Taxonomy Access Control

这太完美了!用户只能按预期访问一个论坛,但真正的考验在于我们是否可以编辑其他人的帖子。在这种情况下,我使用我的管理员用户向该论坛发布了一条便条,并通过论坛管理员用户访问该便条,出现以下页面:

Setting Permissions with Taxonomy Access Control

从中您可以看到,由于显示了分类术语商业捕鱼,所以启用的列表指令工作正常。显然,视图更新指令工作正常,因为我们可以看到帖子并对其进行编辑。如果您想确认删除指令是否有效,只需点击编辑并检查页面底部的删除帖子选项是否可用。

这是个好消息!在测试了在单个论坛上授予权限的最简单情况后,您现在必须返回并设置所需的所有权限。在这样做的过程中,您可能会遇到其他一些有趣的问题。我将在这里详细介绍其中的几个,最终,您需要练习使用分类法和权限来实现您想要的目标。不过,我建议等到我们更详细地介绍了分类法之后再开始讨论。

返回论坛主持人用户的类别权限页面,禁用所有创建指令,保存您的设置。现在尝试使用论坛管理员用户发布一个新的论坛主题。您应该看到这样的页面:

Setting Permissions with Taxonomy Access Control

有什么问题?提交此消息,然后返回论坛查看。你看到问题了吗?我们已禁用创建,因此我们无法指定该帖子应与哪个术语关联。所以,因为我们只能看到保护集装箱和商业捕鱼论坛,所以我们无法获得新的内容。“但我们最终会允许论坛主持人“查看”所有论坛主题”,您可能会反驳。这是真的,这样做肯定会让帖子更容易访问,但这无助于论坛主持人向他或她负责的论坛发帖。

这很有希望地表明,选择设置是一项相当微妙的任务。重新启用Create指令并再次尝试 post 时,会出现以下额外选项,该选项将执行以下操作:

Setting Permissions with Taxonomy Access Control

现在提交此内容时,会在商业钓鱼论坛中正确显示。我们将保留分类法权限,因为我们还没有详细讨论分类法,一旦我们讨论了分类法的细节,您将能够更有效地进行实践。例如,你们中的一些人可能想知道如何将此便条发布到论坛管理员管辖范围内的所有论坛,而不是一次发布一条。类似的任务将在第 7 章中处理。

一旦你对能够控制论坛版主用户感到满意,让我们尝试一些稍微不同的方法。点击管理访问控制页面的权限选项卡,确保您的匿名用户已选择所有可用的论坛模块权限。保存这些更改并注销 Drupal。现在,您已经看到了这些权限的作用;匿名用户很可能能够管理所有论坛。果不其然,主菜单向我们显示了指向论坛的链接以及管理论坛的链接。点击底部链接,这将导致论坛的管理页面。你应该注意到一些相当奇怪的事情,比如:

Setting Permissions with Taxonomy Access Control

嗯,这很奇怪,因为我们知道那里有论坛。让我们试试主菜单中的另一个论坛链接。这一次,跟随该链接只会显示一个空白页面。这很奇怪,我们对论坛拥有完全的管理权限,而 Drupal 却表现得好像它们不存在一样。你能找出原因吗?

作为管理员,在访问控制部分删除匿名用户论坛模块权限并保存设置。现在,点击类别权限选项卡,然后为匿名用户选择编辑链接。您将看到与我们最初为论坛版主用户看到的相同的未触及设置页面。答案现在应该是显而易见的。由于匿名用户在这里没有设置权限,我们实际上是在给 Drupal 提供相互冲突的指示,说该用户是论坛管理员,不允许访问论坛中与分类术语相关的任何内容。

在我们的例子中,我们希望匿名用户能够查看论坛中的所有内容(尽管,如果有任何您想要隐藏的主题,您可以不选中它们),因此我们从列表下拉列表中选择全选,并在视图中选择全选列下拉列表并保存设置。以匿名用户的身份查看结果。你会发现,可以按预期查看所有论坛,但你必须登录才能发布任何内容。

这说明需要定期彻底测试您的站点,以便不可预见的更改不会产生灾难性的影响。在讨论权限的某个阶段,您可能会问自己:一个用户可以属于多个角色吗?接下来的问题当然是属于多个角色的用户可以获得哪些权限?为了回答这些非常重要的问题,让我们看看我们讨论的下一个主题。

用户

通过使用角色,可以向单个用户帐户授予任意多或任意少的权限。Drupal 用户其实什么都不是,除非他们已经有了一个角色来定义他们在 Drupal 框架中的操作方式。因此,我们首先讨论角色。

用户可以通过两种方式创建。最常见的方法是在网站上注册,如果您还没有注册,请点击主页上的创建新帐户链接,在您的网站上注册一个新用户,以便自己测试。请记住提供有效的电子邮件地址,否则您将无法正确登录。这将创建一个经过身份验证的用户,拥有分配给经过身份验证的用户角色的任何和所有权限。

第二种方法是使用管理用户创建新用户。为此,请以管理用户身份登录并单击管理下的用户。选择添加用户选项卡并按照该页面上的说明操作,您需要向 Drupal 提供用户名、电子邮件地址和密码。一旦你有两个用户可以一起玩,是时候开始与他们合作了。

管理用户

作为站点管理员,您可以完全访问其他用户的帐户信息。点击管理用户页面中操作列标题下的编辑链接,您可以对给定用户进行所需的任何更改。

现在,当我们在第 2 章中最初设置管理用户时,我们已经简要地查看了此页面,但是现在值得稍微深入地查看一下,因为它有一个重要的设置,第一次没有。如果将页面向下滚动一点,您将注意到您现在可以选择指定此用户所属的角色。目前演示站点的角色部分如下:

Administering Users

阅读此屏幕截图中复选框下方的行,您可以看到,每当您将用户添加到另一个角色时,该用户将获得这些角色的组合权限。因此,这回答了我们在前面关于权限的部分中提出的问题。但是有什么大惊小怪的?通过了解这一点,您应该按照以下方式委派角色:

  1. 通过设置匿名用户权限,定义站点最基本的用户。
  2. 为基本的身份验证用户设置权限,最有可能为在您的网站上注册的用户设置权限。
  3. 通过仅添加该角色所需的特定附加权限(仅此而已)来创建特殊角色。不要重新分配经过身份验证的用户已经拥有的权限。
  4. 通过组合其职责或需求所需的任何角色来创建新用户。

如果按照上述步骤操作,您将确保始终为每个角色授予正确的权限。这是因为您正在从最基本到最复杂地构建用户权限,而无需每次分配每个权限。很明显,论坛版主拥有匿名和经过身份验证的用户的所有权限以及其他一些权限。因此,如果您回顾本章中的第一个图表,您可以看到,在本例中,我们将:

  1. 定义匿名用户身份验证用户角色权限身份验证用户应拥有匿名用户的所有权限,以及基本站点用户所需的任何其他权限。
  2. 创建新角色,仅使用论坛主持人用户博客作者用户所需的附加权限,而不是授予已验证用户的权限
  3. 将博客作者分配给博客作者用户角色(他们将自动获得授予经过身份验证的用户的权限),并对论坛主持人及其角色执行相同的操作。

除了使用该策略为用户分配角色外,本节中的信息非常容易理解;让我们继续吧。

配置用户

本节真正讨论的是网站如何对待用户,而不是讨论用户可以做什么和不能做什么。但是,您会发现本节中的一些信息对网站的外观和感觉很重要。点击管理链接下的设置,然后点击用户。将为您提供一组以用户注册设置开始的选项,如下所示:

Configuring Users

您可能需要考虑前三个选项中的哪一个,取决于您如何设想站点的功能。例如,您可能希望允许每个人阅读并向论坛发表评论,或者做任何事情,而无需先注册。如果是这样的话,那么可能需要注册的唯一人员将履行某种管理职责,在这种情况下,您可能希望选择第一个选项,或者至少第三个选项。

为了演示站点的缘故,第二种选择很好,因为我们希望尽可能多的人参与社区,而不允许任何人发布内容并可能造成问题。还添加了一条有用的消息,向潜在用户解释注册过程。

本页的下一节将介绍用户电子邮件定制的过程。然而,这有一个有趣的方面,Drupal 使某些变量可以在输入的静态文本中使用。让我们来看看如何修改一行,以便得到这种工作方式的感觉。

举例来说,我们将欢迎电子邮件文本的主题从:

将%username 在%site上的帐户详细信息改为稍微活泼一点:

祝贺您%username,您已在%date 向%site 注册!

这里没什么太复杂的!前面带有%符号的关键字只是其他值的占位符,这些值会根据在特定时间的设置方式插入到您的电子邮件中。这使您能够个性化您的通信。在这种情况下,注册为David的用户的欢迎电子邮件主题现在显示如下:

Configuring Users

正如您所看到的,%用户名、【站点】%日期占位符已正确更改,以反映特定设置的变量内容。有几种标准电子邮件的设置可用,如密码恢复欢迎(等待管理员批准)。默认设置当然是相当合理的,并且在需要时很容易更改。请记住,文本区域下方提到了可用于每段文本的占位符,因此请使用它们,直到您对它们的使用感到满意为止。

最后一节涉及图片。现在,如果您希望为用户启用图片支持,则从列表中选择已启用,如果需要,提供默认图片,点击保存配置(其他设置都是不言自明和合理的,如果不适合您,您可以在任何阶段回来更改它们)。

Drupal 将设置一个 pictures文件夹来保存 Drupal 安装中 files文件夹中的所有图片。完成所有操作后,用户将在其我的账户页面的编辑选项卡中添加一个新的部分,如下所示:

Configuring Users

当图片成功上传后,它将出现在我的账户页面上,并与用户的博客和论坛帖子一起出现在网站上。

如果图像未显示,而您最终看到了链接,则如下所示:

Configuring Users

然后您需要确保在访问控制页面上设置了正确的上传模块权限,如下所示:

Configuring Users

请记住,由于论坛管理员用户自动接收认证的用户的所有权限,因此论坛管理员无需启用查看上传文件权限因为这是多余的,会让用户的目的不那么清楚。

允许用户将图片合并到网站中是一种让人们能够个性化他们的贡献的好方法,同时也为每个人提供了与帖子相关联的视觉效果。这是一个培养社区的好方法,因为它有助于给不同的用户某种身份。

编辑图片很容易!只需在用户编辑页面的图片部分进行修改,如下图:

Configuring Users

这几乎是配置用户的终点。在我们继续前进之前,还有一些关于安全的事情需要讨论。

访问规则

到目前为止,在确保能够控制谁在站点上做什么方面,Drupal 似乎或多或少都有所涉及。这当然是事实,但还有一些情况我们还没有讨论过,可能会在某个阶段影响现场。例如,如果你发现有一家公司反复向你的论坛发送广告和营销信息,会发生什么?如果你只想让某家公司的人访问你的网站,会发生什么?

这种性质的问题真的是你心中的一根刺。除非您能够设置访问规则,否则访问问题甚至会将社区成员赶走。

通过管理主菜单项下访问控制页面上的访问规则选项卡,可以使用一些技术来设置访问规则。要实现任何访问规则,您需要选择添加规则选项,该选项将显示以下页面:

Access Rules

从中可以看出,我正在制定一项规则,根据电子邮件地址拒绝访问。在我们继续这一行之前,需要注意的是,有两个可用的允许拒绝选项,它们将根据规则类型部分中提供的用户名、电子邮件主机地址进行操作。最后一个选项掩码允许您指定规则将应用到的用户或主机的实际名称。

在上述情况下,在点击添加规则后,电子邮件地址bad_user@contechst.com将创建一个拒绝规则。

继续创建这样一个规则,完成后,您将看到该规则现在显示在列表选项卡下。既然有了拒绝规则,我们该如何使用它呢?答案是它已经被使用了。如果有人试图使用规则中提供的电子邮件地址注册,他们将被拒绝访问。就目前情况而言,这可能不是很有帮助,因为您不太可能提前知道要阻止哪些特定的电子邮件地址。

为了适应您不能完全确定特定地址的情况,提供了两个通配符,可以用作通用字符串或字符。比如说,你想取缔一个经营小型垃圾邮件业务的人。仅仅屏蔽他们当前的电子邮件地址是不够的,因为他们可以简单地创建另一个地址并使用该地址向 Drupal 注册。如果您知道地址来自一个位置,例如:

<some characters>@irritating_spammer.com

您可以使用 %字符匹配 @符号前的任何字符,有效阻止来自该电子邮件服务器的任何人注册,如下所示:

%@irritating_spammer.com

如果您有 Hotmail 帐户或类似帐户,请尝试阻止以 @hotmail.com结尾的任何地址,然后尝试在网站上注册帐户。您会发现 Drupal 向您展示了以下消息:

Access Rules

当你不想在网站上使用 Hotmail 地址时,一个新的问题就出现了,除了一个在世界各地旅行并且只能访问 Hotmail 地址的亲密朋友。在这种情况下,您还需要设置一个允许规则。如果此人的电子邮件地址恰好是 good_friend@hotmail.com,那么您可以通过在添加规则页面上选择适当的选项来设置允许规则。

您的规则将如下所示:

Access Rules

这样做的目的是禁止网站上的所有 Hotmail 地址。但是,由于允许规则优先于拒绝规则,因此屏幕截图中显示的单一允许规则中指定的唯一 Hotmail 地址将正常工作。现在,当你的好朋友尝试注册时,一切都会顺利进行。

一段时间后,您可能会发现现有的规则集可能会变得有些混乱,或者,继续尝试注册新名称以确保它们按照计划工作是不可行的。在这种情况下,使用访问规则页面右侧的检查规则选项卡。这允许输入用户名称、电子邮件地址和主机,以检查他们是否具有访问权限。只需将这些结果与您的期望进行比较,以确定是否一切都按计划进行。

最后要记住的一点是,如果您使用主机条件拒绝访问,那么这将在整个站点强制执行,而不仅仅是在注册页面上。对于垃圾邮件发送者的情况,您可能希望一般情况下拒绝访问该网站;因此,您可以为掩码选择主机选项,类似于以下内容:

%irritating_spammer%

然后,它将匹配任何包含 irritating_spammer的主机。例如:

www.really_irritating_spammer.com
www.mildly_irritating_spammer.com
www.extremelyirritating_spammer.org
www.unbelievably_irritating_spammer.comms.org.co.sz

等等请记住检查您添加的所有规则是否对站点的访问策略具有所需的影响。如果制定一条规则阻止潜在有价值的社区成员访问内容,导致他们去其他地方,那将是一种耻辱。

如果我在结束之前没有提到 Drupal 网站上还有许多其他与用户访问/身份验证相关的模块,那我就是失职了。可能值得在 http://drupal.org/project/Modules/category/74查看这些,以防您发现一些特别适合您需要的东西。

特别令人感兴趣的是节点隐私 byrole路径访问模块,它们提供了控制内容访问的替代方法。了解了分类法访问模块的工作原理后,您应该有足够的信心使用这些贡献中的任何一个,假设您无法准确实现您想要的。

总结

本章为您提供了控制网站内容访问的基础知识。您已经看到,Drupal 提供了大量的工具和选项,通过保留对管理用户的总体控制,以及通过使用角色将重要任务委托给受信任的用户,来确保站点的正确维护。

我们研究了如何着手规划访问策略。这不仅是一个重要的要求,在确保网站运行顺利的同时,也有助于巩固站点最终将如何工作,迫使你考虑许多可能发生的事情。接下来,我们参观了 Drupal 中访问控制的基本方面,讨论了角色、权限和用户,并学习如何根据站点的要求规划和实施访问策略。

一篇关于如何使用基于分类法控制访问的贡献模块的论述向我们展示了如何对内容的访问权限实施更细粒度的控制。但是,您可能还发现,创建设计良好且一致的访问策略需要一些时间。计划,最重要的是测试,将有助于确保一切按预期进行。

然后引入访问规则作为控制谁进入站点的进一步方法,并讨论了如何有效地使用通配符。有了这些,我们就完成了访问控制,尽管强烈要求您花一些时间玩弄各种选项,直到您对能够进行更改并了解其效果感到满意为止。

接下来的两章将深入了解 Drupal 的心脏跳动的内容!