go get github.com/Privasea/middleware
import "github.com/Privasea/middleware"
// 新增auth.GinInterceptor中间件(放在tl.GinInterceptor后面)
r.Use(tl.GinInterceptor)
r.Use(auth.GinInterceptor())
// 新增cors.CORSMiddleware中间件(放在tl.GinInterceptor前面)
r.Use(cors.CORSMiddleware())
r.Use(tl.GinInterceptor)
r.Use(auth.GinInterceptor())
//注意内部调用的接口不会限流
//目前内部接口为path包含/inner_use/或者/job/则判定为内部接口
//同ip整站访问限制
//rateLimit窗口时间访问次数
//rateLimitTTL窗口时间,比如 60*time.Second 60s
//rdb github.com/go-redis/redis/v8 redis实例
r.Use(limit.NewRateLimit(rateLimit, rateLimitTTL, rdb))
//同ip单个接口访问限制,可用作防重复点击,用于接口层中间件
ex:
chainGroup.POST("/bind_poh", middleware.NewRateLimitForRepetition(rdb), Wrap(bootstrap.Chain.BindPoh))
//同ip单个接口访问限制,自定义参数,用于接口层中间件
ex:
chainGroup.POST("/bind_poh", limit.NewRateLimitForApi(rateLimit, rateLimitTTL, rdb), Wrap(bootstrap.Chain.BindPoh))