package common import ( "net/http" "strings" "github.com/gogf/gf/v2/net/ghttp" ) var ( publicPaths = []string{ "/user/login", } ) func Auth(r *ghttp.Request) { path := r.URL.Path for _, p := range publicPaths { if path == p { r.Middleware.Next() return } } auth := r.Header.Get("Authorization") if auth == "" || !strings.HasPrefix(auth, "Bearer ") { r.Response.WriteJson(ghttp.DefaultHandlerResponse{ Code: http.StatusUnauthorized, Message: "未登录或登录已过期", }) r.Exit() return } claims, err := ParseToken(auth[7:]) if err != nil { r.Response.WriteJson(ghttp.DefaultHandlerResponse{ Code: http.StatusUnauthorized, Message: "登录已过期,请重新登录", }) r.Exit() return } r.SetCtxVar("userId", claims.UserId) r.SetCtxVar("role", claims.Role) r.SetCtxVar("agentId", claims.AgentId) r.Middleware.Next() } func GetUserId(r *ghttp.Request) int64 { v := r.GetCtxVar("userId") if v == nil { return 0 } return v.Int64() } func GetRole(r *ghttp.Request) string { v := r.GetCtxVar("role") if v == nil { return "" } return v.String() } func GetAgentId(r *ghttp.Request) int64 { v := r.GetCtxVar("agentId") if v == nil { return 0 } return v.Int64() } func CheckAdmin(r *ghttp.Request) bool { return GetRole(r) == "admin" } func CheckAgent(r *ghttp.Request) bool { return GetRole(r) == "agent" }