【问题标题】:MediaWiki - restrict access to namespaceMediaWiki - 限制对命名空间的访问
【发布时间】:2020-07-05 15:16:43
【问题描述】:

MediaWiki 1.31.8 中,我需要限制对命名空间中页面的访问,以便只有组的成员才能使用/查看它。

该 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'  ] ] );

【问题讨论】:

    标签: linux mediawiki wiki lockdown


    【解决方案1】:

    您混淆了命名空间名称、ID 和常量。 104 是命名空间 ID,MARKETING 是命名空间名称。几乎所有内容都以命名空间 ID(而不是名称)作为键,包括 $wgNamespacePermissionLockdown

    通常,您可以通过将define( 'NS_MARKETING', 104 ) 放在配置中的某个位置来为命名空间ID 定义一个人类可读的常量,然后编写将按ID 索引的$wgNamespacePermissionLockdown[NS_MARKETING]['*'] = ['marketing'];。如果您改为写$wgNamespacePermissionLockdown[MARKETING],由于没有MARKETING 常量,PHP 将假定您打算写'MARKETING',并将其视为字符串,因此不会为命名空间ID 定义权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-26
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      相关资源
      最近更新 更多