middleware

package
v10.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 18, 2023 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultCORSConfig = CORSConfig{
	AllowOrigins: []string{"*"},
	AllowMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"},
}
View Source
var DefaultCopyBodyConfig = CopyBodyConfig{
	MaxContentLen: 32 << 20,
}
View Source
var DefaultLoggerConfig = LoggerConfig{
	MaxOutputRequestBodyLen:  1024 * 1024,
	MaxOutputResponseBodyLen: 1024 * 1024,
}
View Source
var DefaultRecoveryConfig = RecoveryConfig{
	Skip: 3,
}
View Source
var DefaultTraceConfig = TraceConfig{
	RequestHeaderKey: "X-Request-Id",
	ResponseTraceKey: "X-Trace-Id",
}
View Source
var ErrCasbinDenied = errors.Unauthorized("com.casbin.denied", "Permission denied")

Functions

func AllowedPathPrefixes

func AllowedPathPrefixes(c *gin.Context, prefixes ...string) bool

func AuthWithConfig

func AuthWithConfig(config AuthConfig) gin.HandlerFunc

func CORSWithConfig

func CORSWithConfig(cfg CORSConfig) gin.HandlerFunc

func CasbinWithConfig

func CasbinWithConfig(config CasbinConfig) gin.HandlerFunc

func CopyBody

func CopyBody() gin.HandlerFunc

func CopyBodyWithConfig

func CopyBodyWithConfig(config CopyBodyConfig) gin.HandlerFunc

func Empty

func Empty() gin.HandlerFunc

func Logger

func Logger() gin.HandlerFunc

Record detailed request logs for quick troubleshooting.

func LoggerWithConfig

func LoggerWithConfig(config LoggerConfig) gin.HandlerFunc

func RateLimiterWithConfig

func RateLimiterWithConfig(config RateLimiterConfig) gin.HandlerFunc

func Recovery

func Recovery() gin.HandlerFunc

Recovery from any panics and writes a 500 if there was one.

func RecoveryWithConfig

func RecoveryWithConfig(config RecoveryConfig) gin.HandlerFunc

func SkippedPathPrefixes

func SkippedPathPrefixes(c *gin.Context, prefixes ...string) bool

func StaticWithConfig

func StaticWithConfig(config StaticConfig) gin.HandlerFunc

func Trace

func Trace() gin.HandlerFunc

func TraceWithConfig

func TraceWithConfig(config TraceConfig) gin.HandlerFunc

Types

type AuthConfig

type AuthConfig struct {
	AllowedPathPrefixes []string
	SkippedPathPrefixes []string
	Skipper             func(c *gin.Context) bool
	ParseUserID         func(c *gin.Context) (string, error)
}

type CORSConfig

type CORSConfig struct {
	Enable          bool
	AllowAllOrigins bool
	// AllowOrigins is a list of origins a cross-domain request can be executed from.
	// If the special "*" value is present in the list, all origins will be allowed.
	// Default value is []
	AllowOrigins []string
	// AllowMethods is a list of methods the client is allowed to use with
	// cross-domain requests. Default value is simple methods (GET, POST, PUT, PATCH, DELETE, HEAD, and OPTIONS)
	AllowMethods []string
	// AllowHeaders is list of non simple headers the client is allowed to use with
	// cross-domain requests.
	AllowHeaders []string
	// AllowCredentials indicates whether the request can include user credentials like
	// cookies, HTTP authentication or client side SSL certificates.
	AllowCredentials bool
	// ExposeHeaders indicates which headers are safe to expose to the API of a CORS
	// API specification
	ExposeHeaders []string
	// MaxAge indicates how long (with second-precision) the results of a preflight request
	// can be cached
	MaxAge int
	// Allows to add origins like http://some-domain/*, https://api.* or http://some.*.subdomain.com
	AllowWildcard bool
	// Allows usage of popular browser extensions schemas
	AllowBrowserExtensions bool
	// Allows usage of WebSocket protocol
	AllowWebSockets bool
	// Allows usage of file:// schema (dangerous!) use it only when you 100% sure it's needed
	AllowFiles bool
}

type CasbinConfig

type CasbinConfig struct {
	AllowedPathPrefixes []string
	SkippedPathPrefixes []string
	Skipper             func(c *gin.Context) bool
	GetEnforcer         func(c *gin.Context) *casbin.Enforcer
	GetSubjects         func(c *gin.Context) []string
}

type CopyBodyConfig

type CopyBodyConfig struct {
	AllowedPathPrefixes []string
	SkippedPathPrefixes []string
	MaxContentLen       int64
}

type LoggerConfig

type LoggerConfig struct {
	AllowedPathPrefixes      []string
	SkippedPathPrefixes      []string
	MaxOutputRequestBodyLen  int
	MaxOutputResponseBodyLen int
}

type RateLimiterConfig

type RateLimiterConfig struct {
	Enable              bool
	AllowedPathPrefixes []string
	SkippedPathPrefixes []string
	Period              int
	MaxRequestsPerIP    int
	MaxRequestsPerUser  int
	StoreType           string // memory/redis
	MemoryStoreConfig   RateLimiterMemoryConfig
	RedisStoreConfig    RateLimiterRedisConfig
}

type RateLimiterMemoryConfig

type RateLimiterMemoryConfig struct {
	Expiration      time.Duration
	CleanupInterval time.Duration
}

type RateLimiterMemoryStore

type RateLimiterMemoryStore struct {
	// contains filtered or unexported fields
}

func (*RateLimiterMemoryStore) Allow

func (s *RateLimiterMemoryStore) Allow(ctx context.Context, identifier string, period time.Duration, maxRequests int) (bool, error)

type RateLimiterRedisConfig

type RateLimiterRedisConfig struct {
	Addr     string
	Username string
	Password string
	DB       int
}

type RateLimiterRedisStore

type RateLimiterRedisStore struct {
	// contains filtered or unexported fields
}

func (*RateLimiterRedisStore) Allow

func (s *RateLimiterRedisStore) Allow(ctx context.Context, identifier string, period time.Duration, maxRequests int) (bool, error)

type RateLimiterStorer

type RateLimiterStorer interface {
	Allow(ctx context.Context, identifier string, period time.Duration, maxRequests int) (bool, error)
}

func NewRateLimiterMemoryStore

func NewRateLimiterMemoryStore(config RateLimiterMemoryConfig) RateLimiterStorer

func NewRateLimiterRedisStore

func NewRateLimiterRedisStore(config RateLimiterRedisConfig) RateLimiterStorer

type RecoveryConfig

type RecoveryConfig struct {
	Skip int // default: 3
}

type StaticConfig

type StaticConfig struct {
	SkippedPathPrefixes []string
	Root                string
}

type TraceConfig

type TraceConfig struct {
	AllowedPathPrefixes []string
	SkippedPathPrefixes []string
	RequestHeaderKey    string
	ResponseTraceKey    string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL