我已经安装了AccessControl MediaWiki扩展程序,但如果您搜索甚至包含在访问控制的页面中的任何内容,它似乎会导致访问被拒绝错误。
使用此扩展程序的任何人?
我想要做的就是在除了5个人之外的所有人中隐藏一个页面。
MediaWiki版本1.18.0 AccessControl版本2.1
答案 0 :(得分:1)
我通过添加另一个命名空间来解决它,以便放置我需要保护的页面。然后我通过实现searchablenamespaces钩子来删除命名空间。
通过执行此操作,只会通过搜索恰好位于访问控制页面中的文本来显示拒绝访问页面。
以下是$ IP / extensions / NoSearchNameSpace / NoSearchNameSpace.php的代码
<?php
// This is a quick hack to remove certain listed namespaces from being searchable
// Just set a list of namespace IDs in the wgNoSearchNamespaces array in LocalSettings
// ie $wgNoSearchNamespaces = array(500,501) would remove 500 and 501 from being searched
$wgHooks['SearchableNamespaces'][] = 'noSearchNameSpace';
function noSearchNameSpace($arr){
global $wgNoSearchNamespaces;
foreach($wgNoSearchNamespaces as $ns){
unset($arr[$ns]);
}
return $arr;
}
示例LocalSettings.php条目:
// Add two custom namespaces. One for ACL pages.
// one for pages that will be ACL'd that should not be searched.
$wgExtraNamespaces[500] = "ACL";
$wgExtraNamespaces[501] = "NoSearch";
// Include the NoSearchNamespace extension
require_once("extensions/NoSearchNamespace/NoSearchNameSpace.php");
$wgNoSearchNamespaces = array('500','501');
答案 1 :(得分:1)
我尝试使用1.20.2,当我搜索的页面包含要搜索的文本时将其放入搜索结果列表中,这会导致问题,因为AccessControl.php中的“hookUserCan”函数会导致错误没有返回值。为了解决这个问题,我修改了AccessControl.php的第341行(“return doRedirect('accesscontrol-info-anonymous');”to“return false;”。这会强制搜索结果只返回页面的标题,如果未经授权的用户试图打开它,则会收到权限错误。这不是一个完美的解决方案,但它足以满足我的目的。
编辑,这是一个更好的答案:
我对AccessControl.php程序进行了一些修改,现在它似乎可以与MediaWiki用户组一起使用。剩下的问题是受保护页面的标题显示在搜索结果中。这可以在主MediaWiki源代码(SpecialSearch.php,第562行)中修复,但根据该代码中的注释,它会搞砸分页。
这是我的git目录,可以解压缩到$ IP / extensions / AccessControl:
https://ejc.s3.amazonaws.com/AccessControlGit.zip
以下是AccessControl.php文件:http://pastebin.com/WnyB6gBw
请注意,这仅使用MediaWiki 1.20.2进行了测试(简要)。我希望扩展的作者能够回顾我的所作所为并解决剩下的问题。
答案 2 :(得分:0)
我通过添加
修复了此错误return false;
在所有LINES之后
doRedirect( 'accesscontrol-info-anonymous' );