git init
This commit is contained in:
45
Server/apis/hmv/rotationVerification.ts
Normal file
45
Server/apis/hmv/rotationVerification.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import Logger from "@plugs/Logger";
|
||||
import STANDARDRESPONSE from "STANDARDRESPONSE";
|
||||
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const sharp = require('sharp');
|
||||
const fs = require('fs');
|
||||
const path = require("path");
|
||||
const { v4: uuidv4 } = require('uuid');
|
||||
|
||||
Logger.info(`[API][/hmv/rotationVerification] 加载成功`);
|
||||
// 获取人机验证过程的图片,返回一个RVSession,用于后续的验证
|
||||
router.get('/rotationVerification', async (req, res) => {
|
||||
// 读取图像文件
|
||||
try {
|
||||
// 获取随机图片路径
|
||||
const directoryPath = __dirname.slice(0, -8) + "/assets/RotationVerificationPicture/"
|
||||
let files = fs.readdirSync(directoryPath);
|
||||
files = files.filter(file => path.extname(file).toLowerCase() === '.jpg');
|
||||
let filePath= directoryPath + files[Math.floor(Math.random() * files.length)]
|
||||
Logger.info("[API][/hmv/rotationVerification] 获取人机验证图片:" + filePath)
|
||||
// 生成session和角度信息
|
||||
let session_uuid = uuidv4().replace(/-/g,'');// 32 个字符
|
||||
const rotateDeg = 60 + Math.floor(Math.random() * 240 );// 限制角度范围 60 ~ 300
|
||||
// 加入验证池
|
||||
let RVAddRes = await RotationVerificationService.add(session_uuid, rotateDeg);
|
||||
if(!RVAddRes){
|
||||
Logger.err("[API][/hmv/rotationVerification] 添加验证信息到验证池中失败")
|
||||
res.json({...STANDARDRESPONSE.SERVER_ERROR});
|
||||
return;
|
||||
}
|
||||
// 图片旋转处理
|
||||
const rotatedImage = await sharp(filePath)
|
||||
.rotate(-rotateDeg)
|
||||
.toBuffer();
|
||||
// 转换为Base64编码
|
||||
let imageBase64 = "data:image/jpg;base64," + rotatedImage.toString('base64');
|
||||
Logger.info(`[API][/hmv/rotationVerification] session[${session_uuid}] 验证码图片已生成,角度[${rotateDeg}]`)
|
||||
res.json({...STANDARDRESPONSE.OK,'data': imageBase64,'session': session_uuid})
|
||||
} catch (error) {
|
||||
Logger.err("[API][/hmv/rotationVerification] 获取人机验证图片错误:" + error)
|
||||
res.json({...STANDARDRESPONSE.SERVER_ERROR})
|
||||
}
|
||||
})
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user