阻止Mediawiki上匿名用户访问历史记录?

阻止Mediawiki上匿名用户访问历史记录?,mediawiki,Mediawiki,我不希望未注册(未登录)的用户能够访问我的Mediawiki安装的修订历史记录。我发现了一些关于通过CSS隐藏选项卡的问题,但我希望实际上阻止对整个“历史记录”页面的访问,即使是通过直接URL访问 有许多功能强大的插件可以以各种复杂的方式限制用户访问,但我希望在开始设置大规模扩展之前,该功能有一个简单的“关闭开关”。最简单的方法是将以下代码行添加到LocalSettings.php文件的底部: $wgHooks['MediaWikiPerformAction'][] = function( $o

我不希望未注册(未登录)的用户能够访问我的Mediawiki安装的修订历史记录。我发现了一些关于通过CSS隐藏选项卡的问题,但我希望实际上阻止对整个“历史记录”页面的访问,即使是通过直接URL访问


有许多功能强大的插件可以以各种复杂的方式限制用户访问,但我希望在开始设置大规模扩展之前,该功能有一个简单的“关闭开关”。

最简单的方法是将以下代码行添加到LocalSettings.php文件的底部:

$wgHooks['MediaWikiPerformAction'][] = function( $output, $article, $title, $user, $request, $wiki ) {
  if( ( !$user || $user->isAnon() ) && ( $request->getVal('action') == 'history' ) ) {
    return false;
  }
  return true;
}

请注意,此解决方案需要PHP5.5+和mediawiki 1.25+

我试图在最新的1.32版本中添加代码,但它抛出了一个服务器错误500。看来他们把所有的人都除名了。通过使用锁定扩展,我能够完成同样的事情,请参见此处:

我在LocalSettings.php中使用了这个选项

$wgActionLockdown['history'] = [ 'user' ];

建议没有这个代码段对我很有用,你能建议我如何在特定的组中而不是匿名用户上执行它吗?当然,只需将部分
(!$user | |$user->isAnon())
替换为
($user&&in_数组('my_custom_group',$user->getGroups())
,其中,
my_custom\u group
是您的目标组。它可以作为一种魅力,但我想补充的是,您必须创建一个真正的自定义组:它不适用于内置组,如“官僚”或“用户”。您可以尝试将
$user->getGroups()
替换为
$user->getEffectiveGroups()
,这一个应该跟踪所有自动组,包括
*
(匿名)和
用户
谢谢!它工作得很好。我更改了您给我的代码,因为我希望“官僚”组访问历史,而不是“用户”组。函数BlockHistoryUsers($output、$article、$title、$user、$request、$wiki){if($user&&in_-array('官僚',$user->getEffectiveGroups())&($request->getVal('action')='history')){return true;}elseif($user&&in_-array('user',$user->getEffectiveGroups())&($request->getVal('action')='history')){return false;}return true;}