MediaWiki - 限制对命名空间的访问
MediaWiki - restrict access to namespace
在 MediaWiki 1.31.8 中,我需要限制对命名空间中页面的访问,因此只有组成员才能 use/view 它。
该 wiki 有超过 500 个以“MARKETING:”开头的页面:
我通过将此添加到 LocalSettings.php 创建了一个命名空间:
"$wgExtraNamespaces =
array (104 => "MARKETING",
105 => "MARKETING_Talk");
然后我安装了 Lockdown 并将这一行添加到 LocalSettings.php:
$wgNamespacePermissionLockdown[MARKETING]['*'] = ['marketing'];
(I've seen some users have "marketing" as their group in the wiki "ListUsers" webpage)
然后我用一个没有组的虚拟用户以隐身方式(以避免 cookie 错误)对其进行测试,期望他不会有任何特权,但它只是没有用。我注意到我可以在上面的代码中输入乱码,它不会改变任何东西,甚至不会抛出日志。非常感谢您的帮助,提前致谢。
编辑:已解决。结果是因为营销命名空间是用数组设置的,所以我不得不使用数组的语法:
$wgNamespacePermissionLockdown = array_fill( 104, 105, [ '*' => [ 'marketinhRW' ] ] );
您混淆了名称空间名称、ID 和常量。 104
是命名空间ID,MARKETING
是命名空间名称。几乎所有东西都以命名空间 ID(不是名称)作为键,包括 $wgNamespacePermissionLockdown
。
通常,您会为命名空间 ID 定义一个人类可读的常量,方法是将 define( 'NS_MARKETING', 104 )
放在您的配置中的某处,然后编写 $wgNamespacePermissionLockdown[NS_MARKETING]['*'] = ['marketing'];
,它将按 ID 进行索引。如果您改写 $wgNamespacePermissionLockdown[MARKETING]
,因为没有 MARKETING
常量,PHP 将假定您打算写 'MARKETING'
,并将其视为字符串,因此不会有为命名空间 ID 定义的权限。
在 MediaWiki 1.31.8 中,我需要限制对命名空间中页面的访问,因此只有组成员才能 use/view 它。
该 wiki 有超过 500 个以“MARKETING:”开头的页面:
我通过将此添加到 LocalSettings.php 创建了一个命名空间:
"$wgExtraNamespaces =
array (104 => "MARKETING",
105 => "MARKETING_Talk");
然后我安装了 Lockdown 并将这一行添加到 LocalSettings.php:
$wgNamespacePermissionLockdown[MARKETING]['*'] = ['marketing'];
(I've seen some users have "marketing" as their group in the wiki "ListUsers" webpage)
然后我用一个没有组的虚拟用户以隐身方式(以避免 cookie 错误)对其进行测试,期望他不会有任何特权,但它只是没有用。我注意到我可以在上面的代码中输入乱码,它不会改变任何东西,甚至不会抛出日志。非常感谢您的帮助,提前致谢。
编辑:已解决。结果是因为营销命名空间是用数组设置的,所以我不得不使用数组的语法:
$wgNamespacePermissionLockdown = array_fill( 104, 105, [ '*' => [ 'marketinhRW' ] ] );
您混淆了名称空间名称、ID 和常量。 104
是命名空间ID,MARKETING
是命名空间名称。几乎所有东西都以命名空间 ID(不是名称)作为键,包括 $wgNamespacePermissionLockdown
。
通常,您会为命名空间 ID 定义一个人类可读的常量,方法是将 define( 'NS_MARKETING', 104 )
放在您的配置中的某处,然后编写 $wgNamespacePermissionLockdown[NS_MARKETING]['*'] = ['marketing'];
,它将按 ID 进行索引。如果您改写 $wgNamespacePermissionLockdown[MARKETING]
,因为没有 MARKETING
常量,PHP 将假定您打算写 'MARKETING'
,并将其视为字符串,因此不会有为命名空间 ID 定义的权限。