|
@@ -4,7 +4,7 @@ import { Log, User } from '../model/index.js';
|
|
|
import { getTokenFu } from '../middleware/jwt.js';
|
|
import { getTokenFu } from '../middleware/jwt.js';
|
|
|
import { passWordJia, passWordJie } from '../util/pass.js';
|
|
import { passWordJia, passWordJie } from '../util/pass.js';
|
|
|
import resSend from '../util/resSend.js';
|
|
import resSend from '../util/resSend.js';
|
|
|
-import { generateCaptcha, ipLocResFu } from '../util/index.js';
|
|
|
|
|
|
|
+import { dianNaoId, generateCaptcha } from '../util/index.js';
|
|
|
|
|
|
|
|
// 登录模块 需要做定时器处理,防止短时间多次发送
|
|
// 登录模块 需要做定时器处理,防止短时间多次发送
|
|
|
let loginFlag: any = {};
|
|
let loginFlag: any = {};
|
|
@@ -22,13 +22,21 @@ const loginTimeFu = (key: string) => {
|
|
|
const user = {
|
|
const user = {
|
|
|
getCode: async (req: any, res: any) => {
|
|
getCode: async (req: any, res: any) => {
|
|
|
req.apiDescription = '用户模块-获取验证码';
|
|
req.apiDescription = '用户模块-获取验证码';
|
|
|
- const clientIp = ipLocResFu(req);
|
|
|
|
|
|
|
+ const clientIp = dianNaoId(req);
|
|
|
|
|
+
|
|
|
|
|
+ // console.log('--------', clientIp);
|
|
|
|
|
|
|
|
const captcha = generateCaptcha();
|
|
const captcha = generateCaptcha();
|
|
|
// 将验证码文本存入session(小写以便不区分大小写校验)
|
|
// 将验证码文本存入session(小写以便不区分大小写校验)
|
|
|
const captchaTxt = captcha.text.toLowerCase();
|
|
const captchaTxt = captcha.text.toLowerCase();
|
|
|
if (loginFlag[clientIp]) loginFlag[clientIp].loginFlagCode = captchaTxt;
|
|
if (loginFlag[clientIp]) loginFlag[clientIp].loginFlagCode = captchaTxt;
|
|
|
- else loginFlag[clientIp] = { loginFlagCode: captchaTxt };
|
|
|
|
|
|
|
+ else
|
|
|
|
|
+ loginFlag[clientIp] = {
|
|
|
|
|
+ loginFlagNum: 0,
|
|
|
|
|
+ loginFlagTime: 0,
|
|
|
|
|
+ loginFlagRef: null,
|
|
|
|
|
+ loginFlagCode: captchaTxt,
|
|
|
|
|
+ };
|
|
|
|
|
|
|
|
// console.log('生成的验证码(开发调试用):', captchaTxt); // 调试时可查看
|
|
// console.log('生成的验证码(开发调试用):', captchaTxt); // 调试时可查看
|
|
|
|
|
|
|
@@ -39,7 +47,7 @@ const user = {
|
|
|
login: async (req: any, res: any) => {
|
|
login: async (req: any, res: any) => {
|
|
|
req.apiDescription = '用户模块-用户登录';
|
|
req.apiDescription = '用户模块-用户登录';
|
|
|
|
|
|
|
|
- const clientIp = ipLocResFu(req);
|
|
|
|
|
|
|
+ const clientIp = dianNaoId(req);
|
|
|
if (!loginFlag[clientIp]) {
|
|
if (!loginFlag[clientIp]) {
|
|
|
loginFlag[clientIp] = {
|
|
loginFlag[clientIp] = {
|
|
|
loginFlagNum: 0,
|
|
loginFlagNum: 0,
|
|
@@ -49,6 +57,8 @@ const user = {
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // console.log('asdasdas', loginFlag);
|
|
|
|
|
+
|
|
|
if (loginFlag[clientIp].loginFlagNum >= 5) {
|
|
if (loginFlag[clientIp].loginFlagNum >= 5) {
|
|
|
if (loginFlag[clientIp].loginFlagRef) clearTimeout(loginFlag[clientIp].loginFlagRef);
|
|
if (loginFlag[clientIp].loginFlagRef) clearTimeout(loginFlag[clientIp].loginFlagRef);
|
|
|
|
|
|