diff --git a/service/meta.go b/service/meta.go index d193ea5..73a3812 100644 --- a/service/meta.go +++ b/service/meta.go @@ -2,9 +2,8 @@ package service import ( "context" - "encoding/json" - "strconv" + "git.apinb.com/bsm-sdk/core/crypto/encipher" "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/utils" "google.golang.org/grpc/metadata" @@ -15,6 +14,7 @@ type Meta struct { IDENTITY string `json:"identity"` EXTEND map[string]string `json:"extend"` CLIENT string `json:"client"` + ROLE string `json:"role"` } // 解析Context中MetaData的数据 @@ -30,31 +30,28 @@ func ParseMetaCtx(ctx context.Context, opts *ParseOptions) (*Meta, error) { return nil, errcode.ErrJWTAuthNotFound } - // 安全获取 metadata 中的值 - identityValues := md.Get("authorization_identity") - clientValues := md.Get("client") - - if len(identityValues) == 0 { + var Authorizations []string = md.Get("authorization") + if len(Authorizations) == 0 || Authorizations[0] == "" { return nil, errcode.ErrJWTAuthNotFound } + + claims, err := encipher.ParseTokenAes(Authorizations[0]) + if err != nil { + return nil, err + } + + clientValues := md.Get("client") + if len(clientValues) == 0 { return nil, errcode.ErrJWTAuthNotFound } meta := &Meta{ - IDENTITY: md["authorization_identity"][0], + ID: claims.ID, + IDENTITY: claims.Identity, CLIENT: md["client"][0], - } - - if id, err := strconv.Atoi(md["authorization_id"][0]); err != nil { - return nil, errcode.ErrJWTAuthKeyId - } else { - meta.ID = uint(id) - } - - data := make(map[string]string) - if err := json.Unmarshal([]byte(md["authorization_extend"][0]), &data); err == nil { - meta.EXTEND = data + EXTEND: claims.Extend, + ROLE: claims.Role, } if opts != nil {