|
@@ -0,0 +1,40 @@
|
|
|
+class LoginManager {
|
|
|
+ constructor(apiUrl) {
|
|
|
+ this.apiUrl = apiUrl; // 存储API的URL
|
|
|
+ }
|
|
|
+
|
|
|
+ validateInput(username, password) {
|
|
|
+ const invalidChars = /[^a-zA-Z0-9]/; // 定义一个正则表达式,匹配非法字符
|
|
|
+ if (invalidChars.test(username) || invalidChars.test(password)) {
|
|
|
+ return false; // 如果输入包含非法字符,则验证失败
|
|
|
+ }
|
|
|
+ return true; // 否则验证成功
|
|
|
+ }
|
|
|
+
|
|
|
+ async login(username, password) {
|
|
|
+ if (!this.validateInput(username, password)) {
|
|
|
+ alert("用户名和密码只能包含字母和数字!"); // 验证失败时弹出提示
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ const response = await fetch(this.apiUrl, { // 发送POST请求到服务器
|
|
|
+ method: 'POST',
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/json' // 设置请求头部为JSON格式
|
|
|
+ },
|
|
|
+ body: JSON.stringify({ username, password }) // 将用户名和密码转换为JSON字符串
|
|
|
+ });
|
|
|
+ if (response.ok) {
|
|
|
+ const data = await response.json(); // 如果请求成功,解析JSON数据
|
|
|
+ return data; // 返回数据
|
|
|
+ } else {
|
|
|
+ throw new Error('登录失败!'); // 如果响应不成功,抛出错误
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('登录请求失败:', error); // 捕获错误并在控制台输出
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export default LoginManager; // 导出LoginManager类
|