fix: WebUiConfig

This commit is contained in:
手瓜一十雪 2024-05-07 22:44:55 +08:00
parent dedd0be352
commit 579b9dc0c2
4 changed files with 36 additions and 18 deletions

View File

@ -3,7 +3,7 @@ import { NextFunction, Request, Response } from 'express';
import { AuthHelper } from './src/helper/SignToken';
import { resolve } from 'node:path';
import { ALLRouter } from './src/router';
import { WebUIConfig } from './src/helper/config';
import { WebUiConfig } from './src/helper/config';
const app = express();
/**
* WebUI服务
@ -12,7 +12,7 @@ const app = express();
* @returns {Promise<void>}
*/
export async function InitWebUi() {
let config = await WebUIConfig();
let config = WebUiConfig;
app.use(express.json());
// 初始服务
app.all('/', (_req, res) => {

View File

@ -1,6 +1,6 @@
import { RequestHandler } from "express";
import { AuthHelper } from "../helper/SignToken";
import { WebUIConfig } from "../helper/config";
import { WebUiConfig } from "../helper/config";
import { DataRuntime } from "../helper/Data";
const isEmpty = (data: any) => data === undefined || data === null || data === '';
export const LoginHandler: RequestHandler = async (req, res) => {
@ -11,9 +11,8 @@ export const LoginHandler: RequestHandler = async (req, res) => {
message: 'token is empty'
});
return;
}
let config = await WebUIConfig();
if (!await DataRuntime.checkLoginRate(config.loginRate)) {
}
if (!await DataRuntime.checkLoginRate(WebUiConfig.loginRate)) {
res.json({
code: -1,
message: 'login rate limit'
@ -21,14 +20,14 @@ export const LoginHandler: RequestHandler = async (req, res) => {
return;
}
//验证config.token是否等于token
if (config.token !== token) {
if (WebUiConfig.token !== token) {
res.json({
code: -1,
message: 'token is invalid'
});
return;
}
let signCredential = Buffer.from(JSON.stringify(await AuthHelper.signCredential(config.token))).toString('base64');
let signCredential = Buffer.from(JSON.stringify(await AuthHelper.signCredential(WebUiConfig.token))).toString('base64');
res.json({
code: 0,
message: 'success',
@ -46,3 +45,22 @@ export const LogoutHandler: RequestHandler = (req, res) => {
});
return;
};
export const checkHandler: RequestHandler = async (req, res) => {
const authorization = req.headers.authorization;
try {
let CredentialBase64:string = authorization?.split(' ')[1] as string;
let Credential = JSON.parse(Buffer.from(CredentialBase64, 'base64').toString());
await AuthHelper.validateCredentialWithinOneHour(WebUiConfig.token,Credential)
res.json({
code: 0,
message: 'success'
});
} catch (e) {
res.json({
code: -1,
message: 'failed'
});
}
return;
};

View File

@ -36,17 +36,15 @@ async function tryUsePort(port: number, tryCount: number = 0): Promise<number> {
});
}
export interface WebUiConfig {
export interface WebUiConfigType {
port: number;
token: string;
loginRate: number
}
// 读取当前目录下名为 webui.json 的配置文件,如果不存在则创建初始化配置文件
export async function WebUIConfig(): Promise<WebUiConfig> {
async function WebUIConfig(): Promise<WebUiConfigType> {
try {
let configPath = resolve(__dirname, "./config/webui.json");
let config: WebUiConfig = {
let config: WebUiConfigType = {
port: 6099,
token: Math.random().toString(36).slice(2),//生成随机密码
loginRate: 3
@ -57,7 +55,7 @@ export async function WebUIConfig(): Promise<WebUiConfig> {
}
let fileContent = readFileSync(configPath, "utf-8");
let parsedConfig = JSON.parse(fileContent) as WebUiConfig;
let parsedConfig = JSON.parse(fileContent) as WebUiConfigType;
// 修正端口占用情况
const [err, data] = await tryUsePort(parsedConfig.port).then(data => [null, data as number]).catch(err => [err, null]);
@ -69,5 +67,8 @@ export async function WebUIConfig(): Promise<WebUiConfig> {
} catch (e) {
console.error("读取配置文件失败", e);
}
return {} as WebUiConfig; // 理论上这行代码到不了,为了保持函数完整性而保留
}
return {} as WebUiConfigType; // 理论上这行代码到不了,为了保持函数完整性而保留
}
// 读取当前目录下名为 webui.json 的配置文件,如果不存在则创建初始化配置文件
export const WebUiConfig = await WebUIConfig();

View File

@ -71,6 +71,7 @@
</form>
</div>
<script>
//待封装整理
async function submitToken() {
const tokenInput = document.getElementById('token-input');
const errorMessage = document.getElementById('error-message');
@ -115,8 +116,6 @@
}
}
}
alert("登录成功即将跳转");
} else {
console.log(loginResponseJson.message);