nakama/backend/middleware/rateLimiter.js

49 lines
1.5 KiB
JavaScript
Raw Normal View History

2025-11-03 20:35:01 +00:00
const rateLimit = require('express-rate-limit');
// Общий лимит для API
const generalLimiter = rateLimit({
2025-11-04 22:23:33 +00:00
windowMs: 15 * 1000, // 15 секунд
2025-11-03 20:35:01 +00:00
max: 100, // 100 запросов
message: 'Слишком много запросов, попробуйте позже',
standardHeaders: true,
legacyHeaders: false,
});
// Строгий лимит для создания постов
const postCreationLimiter = rateLimit({
2025-11-04 22:23:33 +00:00
windowMs: 15 * 1000, // 15 секунд
max: 10, // 10 постов
2025-11-03 20:35:01 +00:00
message: 'Вы создаёте слишком много постов, подождите немного',
skipSuccessfulRequests: true,
});
// Лимит для авторизации
const authLimiter = rateLimit({
2025-11-04 22:23:33 +00:00
windowMs: 15 * 1000, // 15 секунд
2025-11-03 20:35:01 +00:00
max: 5, // 5 попыток
message: 'Слишком много попыток авторизации',
});
// Лимит для поиска
const searchLimiter = rateLimit({
2025-11-04 22:23:33 +00:00
windowMs: 15 * 1000, // 15 секунд
2025-11-03 20:35:01 +00:00
max: 30, // 30 запросов
message: 'Слишком много поисковых запросов',
});
// Лимит для лайков/комментариев (защита от спама)
const interactionLimiter = rateLimit({
2025-11-04 22:23:33 +00:00
windowMs: 15 * 1000, // 15 секунд
2025-11-03 20:35:01 +00:00
max: 20, // 20 действий
message: 'Вы слишком активны, немного подождите',
});
module.exports = {
generalLimiter,
postCreationLimiter,
authLimiter,
searchLimiter,
interactionLimiter
};