【问题标题】:Problems with MediaWiki's AccessControl extensionMediaWiki 访问控制扩展的问题
【发布时间】:2012-07-26 20:16:07
【问题描述】:

我已经安装了AccessControl MediaWiki 扩展程序,但是如果您搜索甚至包含在访问受控页面中的任何内容,它似乎会导致访问被拒绝错误。

有人在用这个扩展吗?

我想要做的就是在 wiki 中隐藏一个页面,除了 5 个人之外,其他人都不知道。

MediaWiki 版本 1.18.0 访问控制 2.1 版

【问题讨论】:

  • 在扩展的文档页面上,看起来搜索功能正在按设计工作。你试过其他access control extensions吗?
  • 我通过添加另一个命名空间来放置我需要保护的页面来解决它。然后我通过实现 searchablenamespaces 钩子将命名空间从可搜索中删除。

标签: mediawiki acl access-control


【解决方案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');

【讨论】:

  • 您可以将自己的答案标记为正确答案。干得好。
  • 如果有人正在寻找我编写的将命名空间从可搜索中删除的实际代码,我在上面添加了它
【解决方案2】:

我用 1.20.2 尝试过,当我正在搜索的页面包含正在搜索的文本时出现问题,将其放在搜索结果列表中,这引发了错误,因为 AccessControl.php 中的“hookUserCan”函数没有返回值。为了解决这个问题,我将 AccessControl.php ("return doRedirect('accesscontrol-info-anonymous');" 的第 341 行修改为 "return false;"。这会强制搜索结果只返回页面的标题,然后如果未经授权的用户尝试打开它,则会出现权限错误。这不是一个完美的解决方案,但对于我的目的来说已经足够了。

已编辑,这是一个更好的答案:

我对 AccessControl.php 程序进行了一些修改,现在它似乎可以与 MediaWiki 用户组一起使用。剩下的问题是受保护页面的标题显示在搜索结果中。这可以在主要的 MediaWiki 源代码(SpecialSearch.php,第 562 行附近)中修复,但根据该代码中的 cmets,它会搞砸分页。

这是我的git目录,可以解压到$IP/extensions/AccessControl:

https://ejc.s3.amazonaws.com/AccessControlGit.zip

这里只是 AccessControl.php 文件:http://pastebin.com/WnyB6gBw

请注意,这仅在 MediaWiki 1.20.2 中(简单地)测试过。我希望扩展程序的作者能够审查我所做的并解决任何仍然存在的问题。

【讨论】:

    【解决方案3】:

    我通过添加修复了这个错误

    return false;
    

    在 ALL LINES 之后

    doRedirect( 'accesscontrol-info-anonymous' );
    

    【讨论】:

    • 请不要破解代码,这会使升级变得痛苦,并且最终会杀死您的 wiki,因为您会讨厌它。保证。
    猜你喜欢
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多