Documentation
¶
Index ¶
Constants ¶
const (
// KeyPrefixSignNonce 签名随机数缓存 key 前缀
KeyPrefixSignNonce = "micro.pkg:xhttp.xmiddleware:sign:"
)
Variables ¶
var ( // ErrSignExpired 签名已过期错误 ErrSignExpired = bizerr.ErrSignExpired // ErrNonceExpired 随机数已过期错误 ErrNonceExpired = bizerr.ErrNonceExpired )
var ErrAPINotAllowed = bizerr.ErrAPINotAllowed
ErrAPINotAllowed 暂不支持该 API 错误
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 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 ¶
func (m *CORSMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc
Handle 跨域请求处理
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 ¶
func (m *FuncDisableMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc
Handle 功能禁用处理
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 (*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 ¶
func (m *NoLogMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc
Handle 忽略 grpc 请求响应日志打印处理
type RecoverMiddleware ¶
type RecoverMiddleware struct{}
RecoverMiddleware 恐慌捕获恢复处理中间件
func NewRecoverMiddleware ¶
func NewRecoverMiddleware() *RecoverMiddleware
NewRecoverMiddleware 新建恐慌捕获恢复处理中间件
func (*RecoverMiddleware) Handle ¶
func (m *RecoverMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc
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 ¶
func (m *SignMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc
Handle 签名校验处理