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 };