Files
pdnode-account/middleware/rateLimit.js
Bret 9262ef4076 支持速率限制
然后把oauth单独放一个页面
一些UI调整
2025-07-30 12:19:38 -07:00

69 lines
1.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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