我目前正在开发具有登录验证功能的 Ionic 应用程序。目的是通过将用户输入的登录详细信息与数据库中存储的相应用户名和密码进行交叉引用来验证用户输入的登录详细信息。然而,我面临着集成 Moodle 进行身份验证的挑战。我已经建立了一个 Moodle 站点,并且已经建立了一个数据库,但我不确定解决此集成问题的最有效方法。任何指导或见解将不胜感激。
这是我目前用于登录验证的代码:
import { Component } from '@angular/core';
import { NavController } from '@ionic/angular';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage {
username!: string;
password!: string;
constructor(private navCtrl: NavController) {}
login() {
if (this.username === '123' && this.password === '123') {
// Navigate to another page after successful login
this.navCtrl.navigateForward('/home/report-page');
} else {
// Show an error message for unsuccessful login
console.log('Invalid username or password');
}
}
}
更新新尝试:
login() {
const moodleEndpoint = 'https://mysite/webservice/rest/server.php';
const webServiceToken = 'your_web_service_token';
const params = {
wstoken: webServiceToken,
wsfunction: 'core_user_login',
moodlewsrestformat: 'json',
username: this.username,
password: this.password,
};
this.http.get(moodleEndpoint, { params }).subscribe(
(response: any) => {
if (response.errorcode) {
console.log('Login failed. Error: ' + response.errorcode);
} else {
// Successful login
console.log('Login successful');
// You can navigate to another page or perform other actions here
this.navCtrl.navigateForward('/home/report-page');
}
},
(error) => {
console.error('Login failed. Error: ', error);
}
);
}
}
我不太确定我会使用哪种 mooodle 网络服务。
我好像已经解决了。登录应用程序向服务器端 API 发送 POST 请求,服务器端 API 接受用户输入,然后 php 代码检查密码是否有效。
这是接收用户输入 POST 然后将用户输入提供给执行验证的函数的 php:
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['username']) && isset($_POST['password']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$login_result = user_login($username, $password);
}
这里是使用的验证逻辑:
function user_login($username, $password)
{
global $CFG, $DB, $USER;
if (!$user = $DB->get_record('user', array('username' => $username))) {
return false; // User not found
}
// Verify the password using password_verify() instead of directly comparing hashes
if (password_verify($password, $user->password)) {
return true; // Passwords match
} else {
return false; // Passwords do not match
}
}