Compare commits

..

No commits in common. "f7948263c52a82c8f8d186a87b40fce9a3ac5736" and "b8f693ef8297fbb5a706e0e946235040ff758086" have entirely different histories.

1 changed files with 19 additions and 16 deletions

View File

@ -2,8 +2,9 @@ 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"
@ -14,7 +15,6 @@ type Meta struct {
IDENTITY string `json:"identity"`
EXTEND map[string]string `json:"extend"`
CLIENT string `json:"client"`
ROLE string `json:"role"`
}
// 解析Context中MetaData的数据
@ -30,28 +30,31 @@ func ParseMetaCtx(ctx context.Context, opts *ParseOptions) (*Meta, error) {
return nil, errcode.ErrJWTAuthNotFound
}
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
}
// 安全获取 metadata 中的值
identityValues := md.Get("authorization_identity")
clientValues := md.Get("client")
if len(identityValues) == 0 {
return nil, errcode.ErrJWTAuthNotFound
}
if len(clientValues) == 0 {
return nil, errcode.ErrJWTAuthNotFound
}
meta := &Meta{
ID: claims.ID,
IDENTITY: claims.Identity,
IDENTITY: md["authorization_identity"][0],
CLIENT: md["client"][0],
EXTEND: claims.Extend,
ROLE: claims.Role,
}
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
}
if opts != nil {