PersonalMain-Golang/internal/middleware/GlobalMiddleware.go

40 lines
906 B
Go
Raw Normal View History

2023-12-24 15:17:21 +08:00
package middleware
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
"github.com/gogf/gf/v2/text/gregex"
"strconv"
"time"
)
// TimestampMiddleware
//
// 全局中间件
// 检查时间戳误差是否在
func TimestampMiddleware(r *ghttp.Request) {
// 检查时间戳误差是否在
timestamp, err := strconv.ParseInt(r.GetHeader("timestamp"), 10, 64)
if gregex.IsMatch(`^[0-9]{13,14}$`, []byte(strconv.FormatInt(timestamp, 10))) {
if timestamp+int64(2000) > time.Now().UnixMilli() && timestamp-int64(2000) < time.Now().UnixMilli() {
r.Middleware.Next()
} else {
if err != nil {
r.Response.WriteJson(g.Map{
"code": 40011,
"message": "时间戳过期",
"data": nil,
})
}
}
} else {
if err != nil {
r.Response.WriteJson(g.Map{
"code": 40010,
"message": "时间戳格式错误",
"data": nil,
})
}
}
}