我正在尋找一種方法來防止所有用戶在Mediawiki中更改密碼(因爲帳戶創建和密碼更改由中央SSO服務器處理)。防止用戶在Mediawiki中更改其密碼
據我所見,Mediawiki用戶有兩種方法來更改他們的密碼:使用登錄頁面中的「忘記密碼鏈接」(最好的解決方案是能夠顯示自定義鏈接)和能夠在用戶偏好中更改密碼。
我還沒有找到合適的方法,因爲這似乎不能通過LocalSettings.php中的簡單配置來實現。
任何幫助,非常感謝。
我正在尋找一種方法來防止所有用戶在Mediawiki中更改密碼(因爲帳戶創建和密碼更改由中央SSO服務器處理)。防止用戶在Mediawiki中更改其密碼
據我所見,Mediawiki用戶有兩種方法來更改他們的密碼:使用登錄頁面中的「忘記密碼鏈接」(最好的解決方案是能夠顯示自定義鏈接)和能夠在用戶偏好中更改密碼。
我還沒有找到合適的方法,因爲這似乎不能通過LocalSettings.php中的簡單配置來實現。
任何幫助,非常感謝。
這裏有一些黑客是完整的解決方案。我沒有找到它的任何地方這個完整的,所以請給它一個豎起大拇指,如果它是對你有用:
通過將以下更改到了LocalSettings.php
$wgHooks['UserLoginForm'][] = 'lfChangeLoginPage';
function lfChangeLoginPage(&$template) {
$template->set('canreset',false); // removes default reset password link
$template->set('resetlink',false);
// Use the following line to show your own 'reset password' link above the login fields
$template->set('link',"<a href='http://www.somedomain.org/lostpassword'>Forgot your password?</a>");
return true;
}
禁用自定義登錄屏幕的輸出中重置密碼頁面,以防萬一有人知道直接的URL:
01:密碼更改頁面(通過鏈接用戶的喜好簡稱)上// Disallow password reset on password reset page
$wgHooks['UserLoginMailPassword'][] = 'MailPasswordIsAllowed';
function MailPasswordIsAllowed ($username, $error) {
$error = wfMsg('resetpass_forbidden');
return false;
}
不允許更改密碼在用戶偏好
隱藏密碼更改鏈接:
$wgHooks['GetPreferences'][] = 'RemovePasswordChangeLink';
function RemovePasswordChangeLink ($user, &$preferences) {
unset($preferences['password']);
return true;
}
爲我工作 - 因爲我們使用的是PluggableAuth + SimpleSAMLphp,所以我們需要爲用戶隱藏它。 – Taylor
不幸的是,擴展只是爲了鎖定特定的賬戶。它似乎沒有提供一個通用的解決方案。 – CarstenSchmitz
我只是做了這一點,這已經足夠了隱藏鏈接(鏈接到MediaWiki 1.20.3 ):
AuthPlugin.php
線176:
從
變化public function allowPasswordChange() {
return true;
}
到
public function allowPasswordChange() {
return false;
}
不錯 - 這個解決方案的不足之處在於,更改總是需要在Mediawiki更新中重新完成。 – CarstenSchmitz
不要破解核心! – Nemo
您可能想分享你的經驗https://www.mediawiki.org/wiki/Requests_for_comment/AuthManager使得這樣的工作是在未來變得更加容易。 – Nemo