簡體   English   中英

如何更改Mediawiki 1.19.1的登錄頁面以直接轉到Special:UserLogin

[英]How can I change the landing page of Mediawiki 1.19.1 to directly go to Special:UserLogin

我正在嘗試設置一個私有的Mediawiki實例,希望用戶登錄以查看任何內容。 我嘗試在Localsettings.php文件中調整$ wgWhitelistRead變量,但它仍然會將我帶到一個頁面,上面寫着“需要登錄”。 如果用戶沒有登錄,我希望wiki重定向到Special:userLogin。我該怎么辦?

在mwforums上發現了類似的問題,但似乎是舊版本的mediawiki。 有任何想法嗎?

看似自然的地方是OutputPage :: showPermissionsErrorPage() 具體來說,實際的錯誤消息顯示在以下兩行中:

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

要直接重定向到Special:UserLogin,您可以使用類似這樣的(未經測試的!)代碼替換它們:

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

唉,似乎沒有任何方便的鈎子可以讓你從擴展中執行此操作,所以看起來你不得不求助於修補代碼。 這看起來像一個鈎子的自然位置,因此提交一個要求添加這樣一個鈎子的功能請求可能不是一個壞主意。

(或者,您確實可以輸出一個登錄表單,但實現起來可能比僅重定向到Special:UserLogin有點棘手。乍一看,我找不到任何方便的“outputLoginForm()”方法來調用Special:UserLogin代碼 ,雖然實際上並不難自己生成匹配的登錄表單,但這意味着對表單的任何后續更改都可能會破壞兼容性。)

作為一個特別可怕的黑客,您可以將登錄表單放入需要登錄時顯示的消息(應該是loginreqpagetext消息)。 由於反CSRF保護,這將是非平凡的,但您可以通過AJAX解決這個問題。 (肯定有更好的解決方案;這只是快速而骯臟的方式。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM