package authorize import ( "encoding/base64" "errors" "github.com/bytedance/sonic" "sonet/pkg/utils/security" ) type Subject struct { Uid string `json:"uid,omitempty"` Username string `json:"username,omitempty"` Time int64 `json:"time,omitempty"` // ms Extra map[string]string `json:"extra,omitempty"` } // Verify AuthServer Verify logic func Verify(aesKey []byte, token string) (subject *Subject, err error) { bytes, err := base64.URLEncoding.DecodeString(token) if err != nil { err = errors.New("token decode fail: " + err.Error()) return } decode, err := security.DecryptAesCBC(bytes, aesKey) if err != nil { err = errors.New("invalidate token: " + err.Error()) return } subject = &Subject{} err = sonic.Unmarshal(decode, subject) if err != nil { err = errors.New("token payload decode fail: " + err.Error()) return } return }