12分钟阅读时间 (2324字)

探索核心:控制用户访问

June-ACL

在本月的“探索核心”系列中,我们将介绍访问控制列表(ACL)。ACL 是 Joomla 核心的强大组成部分之一,允许您根据需要授予用户尽可能多的或尽可能少的权限,以便他们在使用您的网站时进行操作。

尽管默认的 Joomla ACL 设计得简单直观,但自定义访问权限的能力意味着 Joomla 提供了一种非常灵活的方法来定义整个站点的访问权限。在首先解释您需要了解的概念之后,我将与您分享我实施的一些场景,这些场景扩展了核心 ACL 功能以满足客户的需求。

什么是 ACL?

ACL 代表访问控制列表,它是一个列表,定义了您在任何实现 ACL 原则的系统中可以执行的操作的访问权限和角色。Joomla 使用 ACL 概念允许站点管理员定义、管理和控制您网站上用户的权限,决定他们在登录网站时可以查看、添加、更新和访问的内容。

Joomla 中 ACL 如何工作?

对于基本网站,默认 ACL 已经足够,允许您设置对 Joomla 网站的简单访问。

  • 当您安装 Joomla 网站时,系统会提示您输入用户名和密码以创建超级用户账户。此账户有权修改网站上的所有内容,这是配置您的 Joomla 安装所必需的。

  • 一旦创建了网站,您可以前往“用户”>“管理”,然后向您的网站添加新用户。根据需要将额外的用户添加到管理员用户组,这将使您能够拥有一个团队来管理您的网站。将用户添加到注册用户组将使他们能够登录并查看您只希望登录用户查看的内容。本文中还有更多示例。

  • 您还可以配置指向登录页面的菜单项和/或配置登录模块,以启用用户从网站的首页登录。

Joomla的ACL系统在您开始考虑授予用户其他级别的访问权限时,其真正的威力才显现出来。这种灵活性意味着当用户登录时,您可以根据他们的用户组清楚地知道他们可以访问网站上的哪些内容。

在Joomla中,ACL有三个关键部分,它们协同工作以实现权限管理。

  • 用户

    为了应用权限,ACL依赖于通过用户帐户应用权限。一旦创建用户帐户,该用户就会被分配到一个或多个用户组,而这些组定义了用户可以在网站上做什么。
  • 用户组

    用户可以被分配到一个或多个用户组。每个用户组都是分配给一个或多个查看访问级别的成员,这定义了用户在访问网站时能看到什么。
  • 查看访问级别

    查看访问级别用于定义哪些用户组可以看到网站上的哪些内容。您对查看访问级别最为熟悉的是,在Joomla网站的各种内容区域中,它会填充“访问”下拉菜单。

您可以通过“用户”>“查看访问级别”查看默认组。

  • 公共:包括公共组 - 公共是网站内所有组的父用户组,因此无论访客是否登录,都可以看到所有内容。

  • 访客:仅包括访客组,因此只有未登录的用户会看到分配给访客查看访问级别的内 容。

  • 注册用户:允许分配给注册、管理或超级用户组的用户以及任何子用户组访问。注册用户通常允许任何登录用户访问,但您将在下面看到一些示例,其中这可能不是最佳方案。

  • 特殊:这是一个管理查看访问级别,主要用于限制内容查看,仅限于具有各种级别管理角色的成员用户组。默认情况下,这些包括管理器、作者和超级用户及其子组。

用户组基于继承。因此,在管理用户组成员资格或分配给用户组的权限时,您需要了解您的用户组层次结构的结构,以确保您不会意外地给予用户不应访问的网站部分。

了解Joomla的默认访问控制列表结构后,您可以进一步扩展您网站的ACL结构,添加额外的用户组和查看访问级别,然后将ACL应用于各种场景。有关设置ACL的详细信息,请参阅Joomla文档中的访问控制列表教程

设置附加权限

在大多数情况下,查看访问级别的默认权限就足够了,但有时您可能需要更改默认权限,以允许特定的查看访问级别具有更多或更少的权限。

在结构化您的查看访问级别之后,您可以通过权限选项卡设置Joomla中各种组件和功能的权限,该选项卡出现在Joomla管理员后端的许多部分。

当您转到“系统”>“全局配置”时,屏幕左侧将显示所有各种组件选项的列表。对于每个组件,选项将具有一个权限选项卡,您可以在其中设置该组件功能的权限。您还可以通过屏幕右上角的选项按钮访问组件的权限。

动画显示权限选项卡中的不同用户组,用户可以在其中修改权限。在权限选项卡中选择不同的用户组以修改权限。

权限还出现在网站管理员区域的其它地方。例如,您可以更改单个类别和文章的权限,以阻止特定的用户组编辑该类别的内容。您还可以更改模块的权限,以阻止特定组的用户更改模块的设置。

如果您对配置Joomla访问控制列表还有进一步的问题,请在本文中评论,查阅Joomla文档,或在Joomla论坛Joomla Stack Exchange中提问。

创意ACL使用

使用ACL控制网站访问的方式有无数种。以下是我为各种项目实施的几个示例,可能会给您提供如何为您的网站使用ACL的灵感。

使用访客查看访问级别限制内容显示

有时当用户登录时,某些内容不需要显示,例如登录菜单项。

在我提供的网站访问权限中,我配置了两个菜单项。对于登录菜单项,我将查看访问级别设置为“访客”。这个菜单项只在用户未登录时显示。

根据网站的不同,我要么创建一个设置为“已注册”查看访问级别的退出菜单项,要么创建一个分配给“已注册”的模块。退出选项只在用户登录时显示。

创建付费墙

您可能不想创建一个专门的付费墙,但只是限制对已注册用户的访问,以增加您的网站用户基础。

要限制对您内容的访问,可以将文章设置为“已注册”查看访问级别。然后,您可以将显示博客类别布局的菜单项设置为“公开”访问级别。该菜单项将设置“显示未授权链接”为是。

当Joomla为未登录的用户渲染页面时,它会显示设置为公开类别的文章的“阅读更多”按钮,以及设置为已注册的文章的“注册以阅读更多……”按钮。当用户点击按钮时,他们将进入一个页面以创建用户帐户。

您可以在Joomla文档中了解更多关于如何设置此功能的信息。如果您想将您的网站变成付费墙,即用户需要订阅您的内容,您可以在您的网站上安装会员扩展以添加此功能。

向不同用户组提供订阅内容访问权限

多年来,我多次遇到需要仅向特定已注册用户提供各种内容访问权限的ACL结构。

一个例子是销售在线培训课程的网站。他们有五个用户可以订阅的培训课程,可以是单个课程,也可以是两到五个课程的组合,通过各种套餐选项。

对于这个场景,我为每个课程创建了用户组,这样我可以将订阅者分配到与每个课程相关的用户组。课程内容分配给为该主题创建的各种用户组。我使用的课程平台是JoomlaShack的OS Campus,但还有多个学习管理系统可供选择,它们都类似地使用Joomla的ACL。

我还创建了其他一些用户组,以提供对特殊客户组的访问权限。一个允许我们为联盟提供登录,以便访问所有课程的预览。第二个允许创建用户账户,供顾问演示课程使用,但不得对内容进行任何更改。

为了管理对课程的访问权限,我为每个课程创建了一个查看访问级别。我已选择了可以查看该课程查看访问级别的各种用户组。这包括超级用户(以便我在登录时测试课程)以及课程预览和课程演示用户组。

这个示例的用户管理和订阅使用的是OS Membership Pro,这是JoomDonation的一个扩展,但可以使用其他会员扩展以类似的方式实现。

此解决方案无缝自动化订阅过程,使得新注册并购买课程包的用户自动添加到所需的用户组,并在订阅结束时也自动从订阅用户组中删除,并返回到注册状态。

自定义应用用户访问

我构建的另一系列网站利用了各种表单构建组件来创建简单的应用程序,这些应用程序由Joomla的ACL支持,以控制用户在应用程序中可以访问的内容。

每个应用程序都具有类似的功能,允许用户根据权限级别查看、添加或更新记录。系统之间的差异使用ACL执行以下功能:

  • 只提供某些需要只读访问权限的用户查看访问权限,同时允许另一组用户添加和更新访问权限。

  • 为多个用户组提供特定于其用户组的记录访问权限。例如,来自不同公司的用户有他们自己的公司用户组,这仅允许他们处理与其公司相关的项目。

  • 创建具有自定义查看访问级别的审批工作流,模仿默认的Joomla作者 > 编辑器 > 出版者结构,但仅适用于应用程序。这防止用户编辑网站上其他内容。

创意内容管理

这篇文章的最后示例——如果你们想在未来的一期杂志文章中深入了解此示例,请留言——是利用多个扩展来根据ACL调整内容显示的能力。

现在我已经在我的网站上使用来自Regular Labs的扩展超过十年,根据用户的ACL级别向各种用户显示内容。

其中帮助实现这一点的简单扩展之一是Conditional Content。在先前的示例课程网站上,我使用Conditional Content插件在网站的各个页面上显示消息,提示用户登录(如果他们是订阅者)或向已登录用户提供链接,带他们进入他们购买的课程。

高级模块管理器是Regular Labs的另一款必备扩展。我在这个扩展中使用的最主要功能是能够根据无数选项控制模块的分配,包括将其限制到各种访问控制列表(ACL)选项。您可以指定分配给特定用户、用户组以及查看访问级别。

如何实现ACL?

希望上面的例子能鼓励您尽快更深入地探索核心。ACL一直是Joomla的特性之一,自从2005年以来,我一直将其作为我的CMS首选。

我们很乐意了解您使用Joomla的ACL的更多示例和案例研究,以及您创造性使用ACL的方式。请随意评论您如何使用ACL,或者如果您有一个复杂的示例,撰写一份案例研究并将其提交为杂志文章。

如果您需要有关如何实现ACL的帮助,请查看以下资源,或者在Joomla论坛Joomla Stack Exchange中提问。

进一步阅读

Joomla文档

Joomla的文档包含许多关于使用ACL各种特性的教程和指南。

杂志文章

在Joomla社区杂志中有一段时间没有涉及ACL了。尽管这些文章最初是用Joomla 2.5的示例编写的,但Randy Carey在2012年和2013年概述的概念至今仍然适用。

其他文章和视频资源

在Joomla社区杂志上发表的一些文章代表了作者对特定主题的个人观点或经验,可能并不符合Joomla项目的官方立场。

3
我是如何学习Joomla的 - Rachel Walraven
使用Joomla创建自己的付费新闻通讯
 

评论

已经注册?这里登录
尚未发表评论。成为第一个发表评论的人

通过接受,您将访问由https://magazine.joomla.net.cn/之外的第三方提供的服务