我怎样才能改变的mediawiki 1.19.1的登陆页面,直接进入特殊:用户登陆(How can

2019-09-18 07:20发布

我想建立一个私人Mediawiki的实例,它希望用户登录到看到的任何内容。 我试图调整在的LocalSettings.php文件中的$ wgWhitelistRead变量,但它仍然需要我到一个页面,上面写着“需要登录”。 我想维基重定向到特殊:USERLOGIN如果用户没有登录如何做到这一点?

我发现了一个在mwforums类似的问题 ,但它似乎是一个旧版本的MediaWiki。 有任何想法吗?

Answer 1:

看似自然的地方这样做,这将是在OutputPage :: showPermissionsErrorPage() 。 具体而言,被显示在下面的两行实际的错误消息:

$this->prepareErrorPage( $this->msg( 'loginreqtitle' ) );
$this->addHTML( $this->msg( $msg )->rawParams( $loginLink )->parse() );

要直接重定向到特殊:用户登陆,你可以像这样的东西(!未经测试)的代码替换它们:

$this->redirect( SpecialPage::getTitleFor( 'Userlogin' )->getFullURL( $query ) );

可惜的是,似乎没有要任何方便钩到位,将让你从一个扩展做到这一点,所以它看起来像你必须诉诸于修补代码。 这看起来像一个钩子自然的地方,所以它可能不是一个坏主意, 提交功能请求要求将被添加这样的钩。

(或者,你确实可以输出代替登录表单,但可能是有一点麻烦不仅仅是重定向到特殊的实施:用户登陆一目了然,我找不到任何方便的“outputLoginForm()”方法调用在特别声明:用户登陆码 ,虽然它实际上不是很难产生一个匹配的登录表单自己,这将意味着,以后的任何变化形式有可能打破的兼容性)。



Answer 2:

作为一个特别可怕的黑客,你可以把登录表单到需要登录时显示(应该是这样的消息loginreqpagetext消息)。 这将是不平凡的,由于反CSRF保护,但你可以通过AJAX解决这一点。 (有一定更好的解决方案,这仅仅是做它的快速和肮脏的方式。)



文章来源: How can I change the landing page of Mediawiki 1.19.1 to directly go to Special:UserLogin