Joomla ACL:访问级别
现在你已经掌握了 ACL 术语,让我们实现一个简单的系统,在不同用户看到网站上不同的内容。为了跟上这个示例,你应该使用 Joomla 1.7 或更高版本。
在你开始点击按钮之前,你必须开始制定一个 ACL 策略来实现这个网站。首先,描述你要解决的问题
对于我正在开发的学校网站
- 公众可以访问该网站并看到大部分内容。然而,学生和教师有一些后台内容。
- 教师可以查看专门为教师提供的内容,所有学生内容,以及公开内容。
- 学生只能看到学生内容(不是教师内容)和公开内容。
请注意,我们只讨论了可以看到的内容。我们没有讨论编辑、创建、删除或管理内容。这指向了一个阅读问题——或者是一个 访问级别 的问题。
接下来,这里有三个在这里描述的组:公众、学生和教师。公众组已经存在,但我们需要创建学生和教师组。所有这些用户只是在登录网站以查看更多内容,所以我们需要分配给这个组的唯一权限是登录网站前端的能力。本质上,教师和学生是注册用户。
然后,我们需要创建我们的内容,以便教师可以看到学生和教师内容,而学生只能看到学生内容。
我们解决这个问题的方法如下
- 创建我们的组,称为“学生”和“教师”。
- 为我们的组分配核心权限。在这种情况下,我们正在分配网站登录核心权限。
- 创建我们的用户并将他们分配到组中。我将在我们的示例中创建一个名为“学生”的一个名为“教师”,但在现实世界中,你可能需要创建许多帐户。
- 为学生创建一个访问级别,并为教师创建另一个访问级别。
- 为学生和教师创建分类,并分配正确的访问级别。
- 为学生和教师创建文章,并分配正确的访问级别。
- 为学生和教师创建菜单项,并分配正确的访问级别。
- 测试我们的登录,看看是否正确工作。
1. 创建我们的组
要创建一个组,登录到Joomla网站的的后端。
转到顶部菜单,然后转到用户 - 添加新组。你会看到这个屏幕。
- 对于组标题,输入 教师组。
- 对于组父级,选择 公共。
- 点击右上角的 保存 & 新建 按钮,以保存教师组并创建一个新组。
- 对于组标题,输入 学生组。
- 对于组父级,选择 公共。
- 点击 保存 & 关闭,以保存我们的学生组并返回到用户管理:用户组屏幕。
为什么我把教师组和学生组创建为独立的组,其父级为公共? 当你开始嵌套用户组时,尤其是在你刚开始使用ACL时,权限可以很快变得复杂。通过使你的组成为公共的子组,你可以直接控制组的权限,而不是通过其他组的继承,这对大多数人来说更容易理解。
在这个例子中,将这些组作为注册的子组创建也不会更复杂。如果你选择这样做,那也可以。然而,随着你与越来越复杂的ACL示例一起工作,请记住,将用户组作为公共的子组可以消除复杂性,并有助于调试。
2. 分配核心权限
转到网站 - 全局配置,然后转到权限选项卡。对于学生组和教师组,将网站登录权限设置为允许。将所有其他设置保留为继承。请记住,这些组从公共组继承权限,因此默认情况下,学生和教师组不允许做任何事情。
3. 创建用户,分配到组
现在我们已经创建了组,我们需要创建一些用户来居住在这些组中。
为此,转到用户 - 添加新用户,你会看到以下屏幕
- 姓名:输入用户的全名,在这种情况下,琼斯女士。
- 登录名:为此人输入用户名:teacher。
- 密码和
确认密码:两次输入相同的密码。 - 电子邮件:输入用户的电子邮件地址。(如果你不是为真实用户做这件事,使用
此电子邮件地址正在受到垃圾邮件机器人的保护。您需要启用JavaScript才能查看它。 .)
跳过此页上的其他字段,并向下滚动到分配的组。注意默认情况下已选中“注册”。
从列表中选择“教师”。琼斯女士,教师,现在被分配到注册用户组和教师用户组。
点击“保存 & 新建”,然后对学生的登录重复此过程。学生的名字是David Smith,用户名是david。如果你需要另一个电子邮件地址,使用
为什么我们把这些用户分配到注册用户组以及其他组? 有时你希望登录后的信息对任何登录用户都可见,而不是对特定用户组可见。通过将你的用户分配到更具体的组,你可以在(例如)显示给任何登录用户的用户菜单,但特定的菜单项只针对特定的用户组。这也有助于我们决定为网站定制登录页面。
4. 创建访问级别
我们已经设置了我们的用户、核心权限和用户组,现在是时候创建两个访问级别了,一个用于学生,一个用于教师。
前往“用户”-“添加新访问级别”,你应该会看到这个屏幕
对于“级别标题”,输入“教师访问级别”。然后勾选“教师组”旁边的复选框。这将仅允许教师查看教师组的内容。
点击“保存 & 新建”,将“级别标题”输入为“学生访问级别”,并勾选“学生组”和“教师组”的复选框。这意味着教师可以查看这些学生内容,而学生可以查看学生内容。点击“保存 & 关闭”以离开此屏幕。
为什么我们没有将注册用户分配到教师或学生访问级别? 将注册用户组分配到教师或学生访问级别后,注册用户组中的每个人都将看到教师和/或学生信息。访问级别是确定谁可以看到哪些内容的关键。仔细考虑哪些组应该包含在每个访问级别中。
为什么我们没有将超级用户包含在教师或学生访问级别中? 通过不包括超级用户在这些访问级别中,当超级用户登录到网站的前端时,他们将无法看到教师或学生内容。然而,他们可以从Joomla的后端查看和编辑此内容。如果需要超级用户查看教师和学生内容,请确保将超级用户分配到教师和学生访问级别。
5. 创建分类
在这个网站上,我为教师创建了一个特定内容的分类(在“内容”-“添加新分类”下)
在创建此分类时,请确保将访问下拉菜单(即访问级别)设置为“教师访问级别”。
我还为学生创建了一个分类。设置方式相同,只是标题为“学生分类”,访问级别为“学生访问级别”。
为什么我们为教师和学生内容创建了特定的分类? 您可以在Joomla的任何位置创建内容,然后根据需要为每篇文章分配访问级别。大多数文章都将设置为公共访问级别,但您可以根据需要将注册访问级别、教师访问级别或学生访问级别设置为例外。
然而,将您的文章分组到特定的分类有助于明确内容的受众和访问级别。记住,您始终可以在教师分类内创建子分类,如果您在一个分类中管理的内容太多。
一旦为分类设置了访问级别,该访问级别将继承该分类下所有文章的访问级别,即使您将访问级别设置为公开。
6. 创建文章
接下来,我在“教师”分类下为教师设置了一篇文章。要创建新文章,请转到“内容”-“添加新文章”。
我填写了以下字段
- 标题:这篇文章是为教师而写的
- 分类:教师分类
- 状态:已发布
- 访问:教师访问级别
- 文章文本:输入一些示例文本。
点击“保存 & 新建”,然后为学生对学生重复此过程
- 标题:这篇文章是为学生而写的
- 分类:学生分类
- 状态:已发布
- 访问:学生访问级别
- 文章文本:输入一些示例文本。
完成时点击“保存 & 关闭”。
虽然我为每个组只创建了一篇文章,但我可以创建尽可能多的文章。
如果文章继承了分类的访问级别,为什么还要在每个文章中设置访问级别呢?对我来说,这就像是自我说明。严格来说,你可以将访问级别设置为公共(默认值),但文章仍然只能由教师或学生访问级别成员查看。然而,当我为每个文章设置访问级别时,我确保在9个月后再次访问这个网站修复客户问题时,不会因为重新创建特定文章的访问级别继承而分心——因为文章已经有了这些信息。
7. 创建菜单项
接下来是菜单。在主菜单(在菜单-主菜单下),我们将添加两个链接,一个用于教师,一个用于学生。
要创建链接,我去了新建(右上角),选择菜单项类型为分类列表,并输入以下其他信息
- 标题:教师信息
- 菜单项类型:点击选择,然后选择分类列表
- 状态:已发布
- 访问:教师访问级别
- 选择一个分类:教师分类
点击保存 & 新建,然后为学生重复此过程
- 标题:学生信息
- 菜单项类型:点击选择,然后选择分类列表
- 状态:已发布
- 访问:学生访问级别
- 选择一个分类:学生分类
完成时点击保存 & 关闭。
为什么选择分类列表?这可以使一个分类的所有信息都列在一张页面上。你可以将此链接设置为分类博客、单个文章或任何其他类型的链接。
为什么为菜单设置访问级别?它不是从文章继承的吗?对于菜单项而言,它们的访问级别与它们链接的内容无关。换句话说,你可以有一个访问级别为教师访问级别的文章,但将菜单项的访问级别保留为公共。如果你这样做,只要显示菜单的模块也设置为公共访问级别,链接将对访问网站的任何人可见。当点击时,如果访客没有权限查看链接背后的内容,他们将看到一个消息,表明他们无法访问此位置。
这可能正是你想要的一个销售信息订阅的网站的行为(购买我们的订阅并查看此文章背后的信息!)。但如果你试图提供最少的用户挫败感,将菜单项的访问级别与它背后的内容匹配是一个好主意。
8. 测试我们的登录
我们终于配置了所有必要的设置,以便在我们的网站上为学生和教师提供不同的内容。
访问网站的前端。在登录框中输入您的登录信息。
输入教师琼斯女士的用户名和密码。记住用户名是teacher,密码是你为她设置的。
如果你一切都做对了,你应该在主菜单中看到两个链接,一个是“教师信息”,另一个是“学生信息”。
返回登录页面,点击注销按钮。现在以David Smith,学生身份,用户名为david,密码为你给他的重复此过程。
如果你一切都做对了,你应该在主菜单中看到一个“学生信息”的链接。
结论
如果你一直按照这个例子做下去,可能花了大约15分钟才能完成。
你认为登录体验看起来很丑陋吗?我也是。在我的下一篇文章中,我将向你展示如何根据这个相同的例子为所有用户组自定义登录屏幕。
在Joomla社区杂志上发表的一些文章代表了作者对特定主题的个人观点或经验,可能不符合Joomla项目的官方立场
通过接受,您将访问 https://magazine.joomla.net.cn/ 外部第三方提供的服务
评论