API限流防护
实现API速率限制
提示词
请实现API限流:
需求:
- 全局限流:每IP每分钟100次
- 特定接口更严格:登录每IP每分钟5次
- 用户级别限流:每用户每天1000次
算法:[滑动窗口/令牌桶/漏桶]
存储:[Redis/内存]
要求:
1. 限流中间件
2. 响应头(X-RateLimit-*)
3. 超限返回429
4. 重试时间提示
5. 白名单示例输出
const rateLimit = require('express-rate-limit');
const RedisStore = require('rate-limit-redis');
// 全局限流
const globalLimiter = rateLimit({
store: new RedisStore({ client: redis }),
windowMs: 60 * 1000, // 1分钟
max: 100,
standardHeaders: true,
message: { error: '请求过于频繁,请稍后再试' },
});
// 登录接口限流(更严格)
const loginLimiter = rateLimit({
store: new RedisStore({ client: redis, prefix: 'login:' }),
windowMs: 60 * 1000,
max: 5,
skipSuccessfulRequests: true, // 成功登录不计
message: { error: '尝试次数过多,请15分钟后再试' },
standardHeaders: true,
});
app.use(globalLimiter);
app.use('/auth/login', loginLimiter);评论 0
更多
登录后可点赞、收藏、评论和举报。
还没有评论,先发起一个具体问题。