支持速率限制

然后把oauth单独放一个页面
一些UI调整
This commit is contained in:
2025-07-30 12:19:38 -07:00
parent b965f90c97
commit 9262ef4076
11 changed files with 745 additions and 404 deletions

69
middleware/rateLimit.js Normal file
View File

@ -0,0 +1,69 @@
const rateLimit = require('express-rate-limit');
// 通用速率限制
const generalLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15分钟
max: 100, // 限制每个IP 15分钟内最多100次请求
message: {
success: false,
message: '请求过于频繁,请稍后再试'
},
standardHeaders: true,
legacyHeaders: false,
});
// 登录注册接口限制(更严格)
const authLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15分钟
max: 5, // 限制每个IP 15分钟内最多5次登录/注册尝试
message: {
success: false,
message: '登录/注册尝试过于频繁请15分钟后再试'
},
standardHeaders: true,
legacyHeaders: false,
});
// OAuth授权接口限制最严格
const oauthAuthLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15分钟
max: 10, // 限制每个IP 15分钟内最多3次OAuth授权尝试
message: {
success: false,
message: 'OAuth授权请求过于频繁请15分钟后再试'
},
standardHeaders: true,
legacyHeaders: false,
});
// OAuth令牌接口限制严格
const oauthTokenLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15分钟
max: 10, // 限制每个IP 15分钟内最多10次令牌请求
message: {
success: false,
message: '令牌请求过于频繁,请稍后再试'
},
standardHeaders: true,
legacyHeaders: false,
});
// OAuth客户端管理接口限制
const oauthClientLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15分钟
max: 20, // 限制每个IP 15分钟内最多20次客户端管理操作
message: {
success: false,
message: '客户端管理操作过于频繁,请稍后再试'
},
standardHeaders: true,
legacyHeaders: false,
});
module.exports = {
generalLimiter,
authLimiter,
oauthAuthLimiter,
oauthTokenLimiter,
oauthClientLimiter
};