(req: Request)
| 15 | } |
| 16 | |
| 17 | function getRateLimitIdentifier(req: Request): string { |
| 18 | if (req.session?.id) { |
| 19 | return `session:${req.session.id}`; |
| 20 | } |
| 21 | const ip = (req.headers['x-forwarded-for'] as string)?.split(',')[0]?.trim() || |
| 22 | req.socket.remoteAddress || |
| 23 | 'unknown'; |
| 24 | return `ip:${ip}`; |
| 25 | } |
| 26 | |
| 27 | function rateLimit(maxRequests: number, windowMs: number) { |
| 28 | return (req: Request, res: Response, next: NextFunction) => { |