diff --git a/enforcer.go b/enforcer.go index 450d174..3b83060 100644 --- a/enforcer.go +++ b/enforcer.go @@ -613,7 +613,8 @@ func (e *Enforcer) sessionUnSerialize(v interface{}) *model.Session { if err != nil { return nil } - session, err := serializer.UnSerialize(bytes) + session := &model.Session{} + err = serializer.UnSerialize(bytes, session) if err != nil { return nil } diff --git a/persist/json_adapter.go b/persist/json_adapter.go index 44b3c64..2feaece 100644 --- a/persist/json_adapter.go +++ b/persist/json_adapter.go @@ -2,7 +2,6 @@ package persist import ( "encoding/json" - "github.com/weloe/token-go/model" ) type JsonAdapter struct { @@ -13,15 +12,18 @@ func NewJsonAdapter() *JsonAdapter { return &JsonAdapter{NewDefaultAdapter()} } -func (j *JsonAdapter) Serialize(session *model.Session) ([]byte, error) { - return json.Marshal(session) -} - -func (j *JsonAdapter) UnSerialize(bytes []byte) (*model.Session, error) { - s := &model.Session{} - err := json.Unmarshal(bytes, s) +func (j *JsonAdapter) Serialize(data interface{}) ([]byte, error) { + serializedData, err := json.Marshal(data) if err != nil { return nil, err } - return s, nil + return serializedData, nil +} + +func (j *JsonAdapter) UnSerialize(data []byte, result interface{}) error { + err := json.Unmarshal(data, &result) + if err != nil { + return err + } + return nil } diff --git a/persist/serializer_adapter.go b/persist/serializer_adapter.go index de63919..9a0c632 100644 --- a/persist/serializer_adapter.go +++ b/persist/serializer_adapter.go @@ -1,9 +1,7 @@ package persist -import "github.com/weloe/token-go/model" - type SerializerAdapter interface { Adapter - Serialize(*model.Session) ([]byte, error) - UnSerialize([]byte) (*model.Session, error) + Serialize(data interface{}) ([]byte, error) + UnSerialize([]byte, interface{}) error }