我正在尝试使用 ExtAuthDB 扩展为 MediaWiki 设置单点登录。目的是在用户登录主网站 www.mysite.com 时自动从外部用户系统对用户进行身份验证。Mediawiki 位于子域:www.wiki.mysite.com。
我已经按照指南中的说明安装了扩展程序。所有特权都是正确的。但它不起作用。
ExtAuthDB.php 是:
<?php
/**
* Authentication plugin interface. Instantiate a subclass of AuthPlugin
* and set $wgAuth to it to authenticate against some external tool.
*
* The default behavior is not to do anything, and use the local user
* database for all authentication. A subclass can require that all
* accounts authenticate externally, or use it only as a fallback; also
* you can transparently create internal wiki accounts …
Run Code Online (Sandbox Code Playgroud) 在我的主机上,我目前安装了 2 个 wordpress 应用程序、1 个 phpBB 论坛和一个 MediaWiki。
有没有办法合并登录名,以便所有应用程序共享相同的凭据?
例如,我只想在我的 phpBB 中注册,然后我想使用给定的用户名和密码访问所有其他应用程序。
即使你不知道一个统一的方式,你知道还有哪些登录集成?各有利弊?
我正在使用MediaWiki.wiki中的某些页面包含一个或多个大型导航块,如本页底部的那些:
像这样的块包含在许多页面中.现在,当保存页面时,也会更新指向其他页面的链接列表(pagelinks
表格).这些引用由"这里有什么链接"特殊页面以及可能的其他类似页面使用.
但实际上我不希望这些块中的链接计算在内.有没有办法可以影响MediaWiki在这个更新链接到其他页面的过程中排除页面的某些部分?
我已经编写了一些扩展,覆盖了特定的类并使用了一些钩子,所以我知道这些东西是如何工作的基础知识,但我找不到合适的钩子来影响这部分过程.
至于任何尝试,我发现ParserOutput::addLink
,它用于将解析的链接存储到数组中.然后,在保存时,此数组将合并到数据库中.addLink是从几个地方调用的,最值得注意的是来自Parser::replaceInternalLinks2
调用的地方Parser::internalParse
.
如果我理解正确,internalParse
则分别为每段文字调用.这包括单独的包含,但也包括嵌套标签.也许我可以使用所谓的钩子internalParse
,但我还没有找到圣杯.我可以使用正确的方向来解决它,最好不要修改Parser类本身.
我正在尝试从MediaWiki登录页面为我的phpBB论坛设置一个cookie.登录wiki成功后使用钩子,我想运行一个设置cookie的php脚本.
当我独立运行或使用GET时,脚本可以运行,但出于安全考虑,我想要POST到脚本.为此,我认为curl
这是最好的选择.
不幸的是,即使是这样的基本脚本:
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/ForumLogin.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)
给我一个403 Forbidden错误.robots.txt中没有应该干扰的规则.我还能尝试使脚本工作,还是有其他方法可以从MediaWiki中运行脚本?
我想在MediaWiki的主页面或任何其他页面中显示所有类别,就像它在Special:Categories页面中显示的那样.
任何帮助表示赞赏.
我在一个代码库上设置了一堆不同的语言mediawiki.到目前为止大部分都在工作,但我想使用一个看起来与其他页面不同的主页面.为此,我最初添加了一些仅适用于main_page类的css规则:
body .page-Main_Page { <rules> }
Run Code Online (Sandbox Code Playgroud)
问题在于,在其他语言中,主页面被不同地调用(并且类会相应地更改),因此我要么必须为所有可能的主页标题添加css规则(不会发生),要么在皮肤内部进行检查以添加如果当前页面是主页面,则为主体类.
不幸的是,没有办法检查.我用Google搜索的大多数解决方案都基于"主页"或设置自己的标题.我希望皮肤自动检测标题.
到目前为止我唯一想到的解决方案是将mediawiki的变量用于主页面url并将其与当前页面标题进行比较:
$mainurl = $this->data['nav_urls']['mainpage']['href'];
$ismain = $this->data['thispage'] == substr($mainurl,'6');
Run Code Online (Sandbox Code Playgroud)
(['href']以/ wiki /开头,因此偏移为6)
然后
<body class="<?php echo ($ismain ? 'mainpage' : ''); ?>">
Run Code Online (Sandbox Code Playgroud)
(当然还有一些课程,但你明白了)
但这给了我另一个问题.在西班牙语中,该页面称为PáginaPrincipal.数据['thispage']没有问题,但['href']保存为/ wiki/P%C3%A1gina_Principal
所以...任何人都可以告诉我如何1.以当前使用的语言查找"主页"的翻译或2.将P%C3%A1gina_Principal转换为PáginaPrincipal(以及其他语言的类似)或3告诉我另一种方法来检查我是否在主页上?