Heavier rate limiting for POST and other methods may create data

This commit is contained in:
2025-03-22 19:23:45 +08:00
parent c8bba4fb2d
commit ba1d96b118
4 changed files with 115 additions and 0 deletions

View File

@ -12,6 +12,7 @@ import (
"github.com/gofiber/fiber/v2/middleware/idempotency"
"github.com/gofiber/fiber/v2/middleware/limiter"
"github.com/rs/zerolog/log"
"github.com/samber/lo"
"github.com/spf13/viper"
)
@ -51,6 +52,17 @@ func NewServer() *WebApp {
Max: viper.GetInt("rate_limit"),
Expiration: 60 * time.Second,
LimiterMiddleware: limiter.SlidingWindow{},
Next: func(c *fiber.Ctx) bool {
return lo.Contains([]string{"GET", "HEAD", "OPTIONS", "CONNECT", "TRACE"}, c.Method())
},
}))
app.Use(limiter.New(limiter.Config{
Max: viper.GetInt("rate_limit_advance"),
Expiration: 60 * time.Second,
LimiterMiddleware: limiter.SlidingWindow{},
Next: func(c *fiber.Ctx) bool {
return lo.Contains([]string{"POST", "PUT", "DELETE", "PATCH"}, c.Method())
},
}))
api.MapControllers(app)