1 Star 0 Fork 0

xlizy/common-go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
middleware.go 2.08 KB
一键复制 编辑 原始数据 按行查看 历史
xlizy 提交于 2024-04-09 16:16 . init
package middleware
import (
"fmt"
"gitee.com/xlizy/common-go/base/const/threadlocal"
"gitee.com/xlizy/common-go/base/enums/common_error"
"gitee.com/xlizy/common-go/base/response"
"gitee.com/xlizy/common-go/utils/validator"
"gitee.com/xlizy/common-go/utils/zlog"
"github.com/google/uuid"
"github.com/kataras/iris/v12/context"
"runtime"
)
var Default = func(ctx *context.Context) {
traceId := ctx.GetHeader("X-Request-Id")
if traceId == "" {
traceId = uuid.New().String()
}
threadlocal.SetTraceId(traceId)
userId := ctx.GetHeader("X-Request-UserId")
if userId != "" {
threadlocal.SetUserId(userId)
}
validator.TransInit(ctx)
ctx.Next()
}
var CrossDomain = func(ctx *context.Context) {
ctx.Header("Access-Control-Allow-Origin", ctx.Request().Header.Get("Origin"))
ctx.Header("Access-Control-Allow-Headers", "Content-Type,X-Request-Id,X-Request-Some")
ctx.Header("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE,PATCH,HEAD,TRACE")
ctx.Header("Access-Control-Allow-Credentials", "true")
ctx.Header("Access-Control-Max-Age", "7200")
if ctx.Request().Method == "OPTIONS" {
ctx.StatusCode(200)
} else {
ctx.Next()
}
}
var NeedLogin = func(ctx *context.Context) {
userId := ctx.GetHeader("X-Request-UserId")
if userId == "" {
ctx.JSON(response.Error(common_error.NOT_LOGGED_IN, nil))
} else {
if userId != "" {
threadlocal.SetUserId(userId)
ctx.Next()
} else {
ctx.JSON(response.Error(common_error.NOT_LOGGED_IN, nil))
}
}
}
var GobalRecover = func(ctx *context.Context) {
defer func() {
if err := recover(); err != nil {
if ctx.IsStopped() {
return
}
var stacktrace string
for i := 1; ; i++ {
_, f, l, got := runtime.Caller(i)
if !got {
break
}
stacktrace += fmt.Sprintf("%s:%d\n", f, l)
}
errMsg := fmt.Sprintf("%s", err)
zlog.Info("异常Ctl入口:{}", ctx.HandlerName())
zlog.Info("ErrorInfo:{}", errMsg)
zlog.Info("ErrorStacktrace:{}", stacktrace)
// 返回错误信息
ctx.JSON(response.Error(common_error.SYSTEM_ERROR, errMsg))
ctx.StatusCode(500)
ctx.StopExecution()
}
}()
ctx.Next()
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/xlizy/common-go.git
git@gitee.com:xlizy/common-go.git
xlizy
common-go
common-go
v0.0.25

搜索帮助