diff --git a/enforcer.go b/enforcer.go index e219a17..6977297 100644 --- a/enforcer.go +++ b/enforcer.go @@ -218,6 +218,10 @@ func (e *Enforcer) LoginByModel(id string, loginModel *model.Login, ctx ctx.Cont tokenSign := element.Value.(*model.TokenSign) // delete tokenSign session.RemoveTokenSign(tokenSign.Value) + err = e.updateSession(id, session) + if err != nil { + return "", err + } // delete token-id err = e.adapter.Delete(e.spliceTokenKey(tokenSign.Value)) if err != nil { @@ -241,6 +245,7 @@ func (e *Enforcer) LoginByModel(id string, loginModel *model.Login, ctx ctx.Cont // Replaced replace other user func (e *Enforcer) Replaced(id string, device string) error { + var err error if session := e.GetSession(id); session != nil { // get by login device tokenSignList := session.GetFilterTokenSign(device) @@ -249,8 +254,12 @@ func (e *Enforcer) Replaced(id string, device string) error { if tokenSign, ok := element.Value.(*model.TokenSign); ok { elementV := tokenSign.Value session.RemoveTokenSign(elementV) + err = e.updateSession(id, session) + if err != nil { + return err + } // sign token replaced - err := e.adapter.UpdateStr(e.spliceTokenKey(elementV), strconv.Itoa(constant.BeReplaced)) + err = e.adapter.UpdateStr(e.spliceTokenKey(elementV), strconv.Itoa(constant.BeReplaced)) if err != nil { return err } @@ -264,7 +273,6 @@ func (e *Enforcer) Replaced(id string, device string) error { } } } - } return nil } @@ -377,8 +385,12 @@ func (e *Enforcer) Kickout(id string, device string) error { if tokenSign, ok := element.Value.(*model.TokenSign); ok { elementV := tokenSign.Value session.RemoveTokenSign(elementV) + err := e.updateSession(id, session) + if err != nil { + return err + } // sign token kicked - err := e.adapter.UpdateStr(e.spliceTokenKey(elementV), strconv.Itoa(constant.BeKicked)) + err = e.adapter.UpdateStr(e.spliceTokenKey(elementV), strconv.Itoa(constant.BeKicked)) if err != nil { return err } diff --git a/enforcer_internal_api.go b/enforcer_internal_api.go index ddb9ceb..fc207fd 100644 --- a/enforcer_internal_api.go +++ b/enforcer_internal_api.go @@ -93,6 +93,10 @@ func (e *Enforcer) logoutByToken(token string) error { if session != nil { // delete tokenSign session.RemoveTokenSign(token) + err = e.updateSession(id, session) + if err != nil { + return err + } } // check TokenSignList length, if length == 0, delete this session if session != nil && session.TokenSignList.Len() == 0 {