xmiddleware

package
v0.0.0-...-2a88403 Latest Latest
Warning

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

Go to latest
Published: Apr 5, 2024 License: MIT Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// KeyPrefixSignNonce 签名随机数缓存 key 前缀
	KeyPrefixSignNonce = "micro.pkg:xhttp.xmiddleware:sign:"
)

Variables

View Source
var (
	// ErrSignExpired 签名已过期错误
	ErrSignExpired = bizerr.ErrSignExpired
	// ErrNonceExpired 随机数已过期错误
	ErrNonceExpired = bizerr.ErrNonceExpired
)
View Source
var ErrAPINotAllowed = bizerr.ErrAPINotAllowed

ErrAPINotAllowed 暂不支持该 API 错误

View Source
var ErrInvalidToken = bizerr.ErrInvalidToken

ErrInvalidToken Token 错误

Functions

This section is empty.

Types

type CORSConfig

type CORSConfig struct {

	// AllowCredentials 是否允许携带认证信息,如 cookies 或 tls certificates
	//
	// 详情:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials
	AllowCredentials bool

	// AllowHeaders 允许头部列表,用于校验预检请求中 Access-Control-Request-Headers 头部记录的头部信息
	//
	// 为空时,将使用 []string{xhttp.HeaderAuthorization, xhttp.HeaderContentType, xhttp.HeaderXRequestedWith} 列表信息
	//
	// 详情:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Access-Control-Allow-Headers
	AllowHeaders []string

	// AllowMethods 允许方法列表,用于校验预检请求中 Access-Control-Request-Method 头部记录的方法信息
	//
	// 为空时,将使用 []string{xhttp.MethodGet, xhttp.MethodPost, xhttp.MethodHead} 列表信息;包含通配符 "*" 时,表示允许任意方法
	//
	// 详情:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Access-Control-Allow-Methods
	AllowMethods []string

	// AllowOrigins 允许来源列表,用于校验跨域请求中 Origin 头部记录的来源信息
	//
	// 为空或者在列表中包含通配符 "*" 时,表示允许任意来源
	//
	// 详情:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
	AllowOrigins []string

	// ExposeHeaders 允许暴露头部列表,用于给客户端获取访问跨域响应默认头部定义之外的头部信息
	//
	// 详情:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Access-Control-Expose-Headers
	ExposeHeaders []string

	// MaxAge 缓存的最大时间(秒),用于浏览器缓存预检请求的返回结果
	// 详情:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Access-Control-Max-Age
	MaxAge time.Duration

	// Debug 调试标记,启用时将会打印错误日志
	Debug bool

	// UnsafeWildcardOriginWithAllowCredentials UNSAFE/INSECURE: 允许通配符 "*" 任意来源与 AllowCredentials 一起使用
	//
	// 正常情况下,当服务端设置响应头部 Access-Control-Allow-Origin 为 "*",Access-Control-Allow-Credentials 为 "true"
	// 时,浏览器执行请求将会失败,以规避跨域请求对服务端的数据产生不良影响,而开启 UnsafeWildcardOriginWithAllowCredentials
	// 后,将会根据请求的中的 Origin 头部值设置响应的 Access-Control-Allow-Origin 头部值,而不是设置成通配符 "*"
	// 以让浏览器能继续发送客户端请求
	//
	// 注意:这是非常不安全的,也引起了 https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties
	// 文章中提到的重大安全问题,所以不建议开启
	UnsafeWildcardOriginWithAllowCredentials bool

	// AllowOriginFunc 自定义来源校验函数,它将 origin 作为参数,如果允许该 origin 则返回 true,否则返回 false
	//
	// 当设置了自定义来源校验函数时,字段 AllowOrigins 将会失效
	AllowOriginFunc func(origin string) bool
}

CORSConfig 跨域请求处理配置

func AllowAllCORSConfig

func AllowAllCORSConfig() CORSConfig

AllowAllCORSConfig 获取允许全部跨域请求处理配置

func DefaultCORSConfig

func DefaultCORSConfig() CORSConfig

DefaultCORSConfig 获取默认跨域请求处理配置

func UnsafeAllowAllCORSConfig

func UnsafeAllowAllCORSConfig() CORSConfig

UnsafeAllowAllCORSConfig 获取不安全的允许全部跨域请求处理配置

type CORSMiddleware

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

CORSMiddleware 跨域请求处理中间件

func AllowAllCORSMiddleware

func AllowAllCORSMiddleware() *CORSMiddleware

AllowAllCORSMiddleware 允许全部跨域请求处理中间件

func NewCORSMiddleware

func NewCORSMiddleware(config ...CORSConfig) *CORSMiddleware

NewCORSMiddleware 新建跨域请求处理中间件(不传递配置时,将使用默认配置 DefaultCORSConfig) https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS

func UnsafeAllowAllCORSMiddleware

func UnsafeAllowAllCORSMiddleware() *CORSMiddleware

UnsafeAllowAllCORSMiddleware 不安全的允许全部跨域请求处理中间件

func (*CORSMiddleware) Handle

Handle 跨域请求处理

func (*CORSMiddleware) Handler

func (m *CORSMiddleware) Handler() http.Handler

Handler 跨域请求处理器

type FuncDisableMiddleware

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

FuncDisableMiddleware 功能禁用处理中间件

func MustNewFuncDisableMiddleware

func MustNewFuncDisableMiddleware(fd *disabler.FuncDisabler, routePrefix string) *FuncDisableMiddleware

MustNewFuncDisableMiddleware 新建功能禁用处理中间件

func NewFuncDisableMiddleware

func NewFuncDisableMiddleware(fd *disabler.FuncDisabler, routePrefix string) (*FuncDisableMiddleware, error)

NewFuncDisableMiddleware 新建功能禁用处理中间件

func (*FuncDisableMiddleware) Handle

Handle 功能禁用处理

type GetSecret

type GetSecret = func(ctx context.Context, appKey string) (appKeySecret string, err error)

GetSecret 密钥查询函数

type JWTMiddleware

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

JWTMiddleware JWT 认证处理中间件

func MustNewJWTMiddleware

func MustNewJWTMiddleware(j *jwt.JWT, token any) *JWTMiddleware

MustNewJWTMiddleware 新建 JWT 认证处理中间件

注意:token 必须为结构体或结构体指针,名称以 json tag 对应的名称与 payloads 进行映射

func NewJWTMiddleware

func NewJWTMiddleware(j *jwt.JWT, token any) (*JWTMiddleware, error)

NewJWTMiddleware 新建 JWT 认证处理中间件

注意:token 必须为结构体或结构体指针,名称以 json tag 对应的名称与 payloads 进行映射

func (*JWTMiddleware) Handle

func (m *JWTMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc

Handle JWT 认证处理

type LogMiddleware

type LogMiddleware struct{}

LogMiddleware 请求响应日志打印处理中间件

func NewLogMiddleware

func NewLogMiddleware() *LogMiddleware

NewLogMiddleware 新建请求响应日志打印处理中间件

func (*LogMiddleware) Handle

func (m *LogMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc

Handle 请求响应日志打印处理

type NoLogMiddleware

type NoLogMiddleware struct{}

NoLogMiddleware 忽略 grpc 请求响应日志打印处理中间件

func NewNoLogMiddleware

func NewNoLogMiddleware() *NoLogMiddleware

NewNoLogMiddleware 新建忽略 grpc 请求响应日志打印处理中间件

func (*NoLogMiddleware) Handle

Handle 忽略 grpc 请求响应日志打印处理

type RecoverMiddleware

type RecoverMiddleware struct{}

RecoverMiddleware 恐慌捕获恢复处理中间件

func NewRecoverMiddleware

func NewRecoverMiddleware() *RecoverMiddleware

NewRecoverMiddleware 新建恐慌捕获恢复处理中间件

func (*RecoverMiddleware) Handle

Handle 恐慌捕获恢复处理

type SignMiddleware

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

SignMiddleware 签名校验处理中间件

func MustNewSignMiddleware

func MustNewSignMiddleware(store *xkv.Store, getSecret GetSecret) *SignMiddleware

MustNewSignMiddleware 新建签名校验处理中间件

func NewSignMiddleware

func NewSignMiddleware(store *xkv.Store, getSecret GetSecret) (*SignMiddleware, error)

NewSignMiddleware 新建签名校验处理中间件

func (*SignMiddleware) Handle

Handle 签名校验处理

Jump to

Keyboard shortcuts

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