【问题标题】:Block access to history for anonymous users on Mediawiki?在 Mediawiki 上阻止匿名用户访问历史记录?
【发布时间】:2019-04-30 13:17:05
【问题描述】:

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

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

【问题讨论】:

标签: mediawiki


【解决方案1】:

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

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

请注意,此解决方案需要 PHP 5.5 + 和 mediawiki 1.25+

【讨论】:

  • 这个sn-p对我很有用,你能告诉我如何在匿名用户上而不是在特定组上做吗?
  • 当然,只需将部分 ( !$user || $user->isAnon() ) 替换为 ( $user && in_array('my_custom_group', $user->getGroups() ) ) ,其中 my_custom_group 是您的目标群体
  • 它可以作为一个魅力,但我想补充一点,您必须创建一个真正的自定义组:它不适用于“bureaucrat”或“user”等内置组。跨度>
  • 您可以尝试将$user->getGroups() 替换为$user->getEffectiveGroups(),这应该会跟踪所有自动组,包括*(匿名)和user
  • 谢谢!它工作得很好。我更改了您给我的代码,因为我希望“官僚”组访问历史记录,而不是“用户”组。函数 BlockHistoryUsers( $output, $article, $title, $user, $request, $wiki ) { if( ( $user && in_array('bureaucrat', $user->getEffectiveGroups() ) ) && ( $request->getVal ('action') == 'history' ) ) { return true; } elseif( ( $user && in_array('user', $user->getEffectiveGroups() ) ) && ( $request->getVal('action') == 'history' ) ) { return false; } 返回真; }
【解决方案2】:

我试图在最新的 1.32 版本上添加代码,但它引发了服务器错误 500。看起来他们已经一起弃用了 wgHooks。我可以通过使用 Lockdown 扩展来完成同样的事情,请参见此处:

https://www.mediawiki.org/wiki/Extension:Lockdown

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

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

【讨论】:

  • 效果很好,谢谢
猜你喜欢
  • 2017-12-10
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多