我正嘗試使用身份驗證插件在moodle中手動驗證用戶,但我不明白整個進程需要的所有工作。所以,關於我在這裏失蹤的一些建議將會非常有幫助!Moodle身份驗證插件。我錯過了什麼?
我創建了插件,啓用它,並且它工作,但僅限於某些情況,這就是我的問題所在。我的猜測是,在某些時候,我需要實際調用一個將用戶信息保存在moodle數據庫中的函數。但是,我不知道它在哪裏,或者它是如何工作的。所以......專家,請在這裏幫我一把。
以下是我在身份驗證插件中更改的兩個功能。 (auth.php)
function loginpage_hook() {
global $CFG, $DB, $user, $frm, $errormsg;
$IsAuthenticated = false;
if(isset($_COOKIE["AUTHENTICATION_KEY"])){
$json = file_get_contents("WWW.WEBSERVICEURL.COM",true);
//getting the file content
$decode = json_decode($json, true);
//getting the file content as array
if($decode["AuthFlag"]){
$ucUser = $decode["Username"];
$user = $DB->get_record('user', array('username'=>$ucUser, 'mnethostid'=>$CFG->mnet_localhost_id));
$frm->username = $ucUser;
$IsAuthenticated = true;
}
}
if(!$IsAuthenticated && empty($frm->username)){
$errormsg = ".";
}
}
/**
* Returns true if the username and password work or don't exist and false
* if the user exists and the password is wrong.
*
* @param string $username The username
* @param string $password The password
* @return bool Authentication success or failure.
*/
function user_login ($username, $password) {
global $CFG, $DB, $user;
if(!$user){ return false; }
if(isset($_COOKIE["AUTHENTICATION_KEY"])){
$json = file_get_contents("WWW.WEBSERVICEURL.COM", true);
//getting the file content
$decode = json_decode($json, true);
//getting the file content as array
if($decode["AuthFlag"]){
$ucUser = $decode["Username"];
if($user->username = $ucUser){ return true; }
}
}
return false;
}
我無法確切地知道你的問題在哪裏,你想達到什麼目的。你能更具體一點嗎? – limoragni
我的問題是,當我嘗試手動驗證用戶(即使是web服務)時,它不適用於不在moodle數據庫中的用戶(如果這樣做的話)。所以,我正在尋找的是在moodle數據庫中創建用戶,以便我的手動身份驗證可以工作。類似的東西。但我實際上找到了一種解決方法,已經在使用的LDAP插件創建了這個moodle用戶,所以...當試圖使用我的插件時,如果用戶不存在,我告訴moodle使用LDAP,下次,由於用戶現在已經創建,我的插件工作。感謝你的幫助! – Naner