ldap-1-backend/middleware/RateLimitMiddleware.go

23 lines
439 B
Go
Raw Normal View History

2022-05-18 17:57:03 +08:00
package middleware
import (
"time"
2022-05-29 10:06:21 +08:00
"github.com/eryajf/go-ldap-admin/svc/response"
2022-05-18 17:57:03 +08:00
"github.com/gin-gonic/gin"
"github.com/juju/ratelimit"
)
func RateLimitMiddleware(fillInterval time.Duration, capacity int64) gin.HandlerFunc {
bucket := ratelimit.NewBucket(fillInterval, capacity)
return func(c *gin.Context) {
if bucket.TakeAvailable(1) < 1 {
response.Fail(c, nil, "访问限流")
c.Abort()
return
}
c.Next()
}
}