package common import ( "context" "github.com/gin-gonic/gin" "github.com/micro/go-micro/metadata" "github.com/micro/go-micro/server" "video-analysis-shop/config" "video-analysis-shop/proto/user" ) var ( userCli user.UserService ) func GetUserClient() user.UserService { if userCli == nil { uSrvC := GetMicroClient(config.ServiceConf.User) userCli = user.NewUserService(config.ServiceConf.User, uSrvC.Client()) } return userCli } func AuthWrapper(fn server.HandlerFunc) server.HandlerFunc { return func(ctx context.Context, req server.Request, resp interface{}) error { //meta, ok := metadata.FromContext(ctx) //if !ok { // fmt.Println("no auth meta-data found in request") // return errors.New("no auth meta-data found in request") //} //fmt.Println("meta:", meta) //loginUserId := "" //token := meta["token"] //if token != "" { // authResp, err := GetUserClient().ValidateToken(context.Background(), &user.ValidateTokenReq{ // Token: token, // }) // fmt.Println("Auth Resp:", authResp, "err:", err) // // if err !=nil { // return err // } // loginUserId = authResp.UserId //} else { // fmt.Println("metadata token is nil") //} //loginUserId = meta[CurrentUserIdKey] //fmt.Println("meta CurrentUserId:", loginUserId) //ctx = context.WithValue(ctx, "current_user_id", loginUserId) return fn(ctx, req, resp) } } const ( CurrentUserIdKey = "Current_user_id" ) // ContextWithSpan 返回context func ContextWithMeta(c *gin.Context) context.Context { ctx := context.TODO() md := make(map[string]string) v, ok := c.Get(CurrentUserIdKey) if ok { md[CurrentUserIdKey] = v.(string) } else { md[CurrentUserIdKey] = "" } return metadata.NewContext(ctx, md) } func GetUserIdFromCtx(ctx context.Context) string { meta, ok := metadata.FromContext(ctx) if !ok { return "" } return meta[CurrentUserIdKey] }