默认情况下,所有用户都可以查看你wiki网站上的页面。要限制用户查看MediaWiki站点上的内容,你必须更改用户组的权限。例如,你可以阻止未注册用户查看页面,也可以仅允特定的许注册用户查看页面。
为什么会有这种需要呢?一般在私人wiki站点刚创建或进行内部调试时会用到,当然也可能是处于某种特殊的目的(非公开资料)。而要实现这个目的通常与限制某些组(例如匿名用户)的页面编辑相结合,同时还要防止用户(包括管理员)随意创建账户造成的权限混乱。
在本文中,我们将讨论如何阻止用户查看内容。
权限设置
它的实现思路是先通过修改MediaWiki的LocalSettings.php
文件来更改用户组的权限,例如:
$wgGroupPermissions['*']['read'] = false;
如果光这样做的话,你会发现即便你是拥有最高权限的管理员,同样无法查看页面。所以接下来的要做的就是给每个不同组的用户分配阅读权限,比如管理员:
$wgGroupPermissions['sysop']['read'] = true;
现在,身为管理员的你可以看到页面了,而其他用户还是没办法看。
为什么会搞得那么复杂呢?因为在MediaWiki内置的默认组中,阅读页面的权限是最低的,并向所有(组)的人开放,包括未注册用户和注册用户组。所以,除了通过添加上述行来禁用匿名用户查看页面之外,你还要对注册用户组禁用该功能。然后根据不同权限由高至低逐级开放。请记住,如果用户属于多个组,并且其中一个组的用户权限被禁用,但另一个组的用户权限被启用,则该用户将能够执行该操作。
除了这种针对特定用户组全开或全关的设置外,我们还可以针对某些特定页面来进行配置,这里主要用到的就是白名单功能(系统自带)——$wgWhitelistRead。
白名单
可以将页面列入白名单,以便即使用户没有查看页面的权限也可以访问它们。这非常重要,例如,注册用户能够打开登录页面并登录他们的帐户。默认情况下,登录页面已经被列入白名单,因此无论如何都可以访问它,你不必担心这一点。用户重置密码的页面也默认列入白名单。你可以通过在 MediaWiki 的LocalSettings.php
文件末尾添加一些代码来将页面列入白名单。例如,如果你在新行中添加以下内容:
$wgWhitelistRead = array( "首页", "示例", "Example page");
系统则会将首页(即网站的主页)和名为“示例”的页面列入白名单。你可以根据需要列出任意数量的页面。如果名称由多个单词组成,请用空格分隔它们,如上所示。如果页面属于除主命名空间之外的任何其他命名空间,你还应该将其添加到名称中。你可以检查页面 URL 中的内容。例如,Special:UserLogin
是登录页面(属于Special命名空间)。
建议你将对查看页面的限制与对编辑页面以及创建帐户的限制结合起来。否则,由于登录页面是可访问的,任何访问者都可以创建帐户并查看内容。
注意:限制匿名用户(代码中标有*的用户组)访问页面也意味着这些页面不会被搜索引擎索引。