【发布时间】:2019-04-30 13:17:05
【问题描述】:
我不希望未注册(未登录)的用户能够访问我安装的 Mediawiki 的修订历史记录。我发现了一些过去关于通过 CSS 隐藏选项卡的 SE 问题,但我希望实际上阻止对整个“历史”页面的访问,即使是通过直接 URL 访问也是如此。
有许多功能强大的插件可以以各种复杂的方式限制用户访问,但我希望在开始设置大规模扩展之前,可以在某个地方为该功能提供一个简单的“关闭开关”。
【问题讨论】:
标签: mediawiki
我不希望未注册(未登录)的用户能够访问我安装的 Mediawiki 的修订历史记录。我发现了一些过去关于通过 CSS 隐藏选项卡的 SE 问题,但我希望实际上阻止对整个“历史”页面的访问,即使是通过直接 URL 访问也是如此。
有许多功能强大的插件可以以各种复杂的方式限制用户访问,但我希望在开始设置大规模扩展之前,可以在某个地方为该功能提供一个简单的“关闭开关”。
【问题讨论】:
标签: mediawiki
最简单的方法是将这行代码添加到 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+
【讨论】:
( !$user || $user->isAnon() ) 替换为 ( $user && in_array('my_custom_group', $user->getGroups() ) ) ,其中 my_custom_group 是您的目标群体
$user->getGroups() 替换为$user->getEffectiveGroups(),这应该会跟踪所有自动组,包括*(匿名)和user
我试图在最新的 1.32 版本上添加代码,但它引发了服务器错误 500。看起来他们已经一起弃用了 wgHooks。我可以通过使用 Lockdown 扩展来完成同样的事情,请参见此处:
https://www.mediawiki.org/wiki/Extension:Lockdown
我在 LocalSettings.php 中使用过这个选项
$wgActionLockdown['history'] = [ 'user' ];
【讨论】: