feat: reset session

This commit is contained in:
weloe
2023-05-16 14:45:44 +08:00
parent 7905f81270
commit 29d76d7bfb
2 changed files with 19 additions and 3 deletions

View File

@@ -218,6 +218,10 @@ func (e *Enforcer) LoginByModel(id string, loginModel *model.Login, ctx ctx.Cont
tokenSign := element.Value.(*model.TokenSign) tokenSign := element.Value.(*model.TokenSign)
// delete tokenSign // delete tokenSign
session.RemoveTokenSign(tokenSign.Value) session.RemoveTokenSign(tokenSign.Value)
err = e.updateSession(id, session)
if err != nil {
return "", err
}
// delete token-id // delete token-id
err = e.adapter.Delete(e.spliceTokenKey(tokenSign.Value)) err = e.adapter.Delete(e.spliceTokenKey(tokenSign.Value))
if err != nil { if err != nil {
@@ -241,6 +245,7 @@ func (e *Enforcer) LoginByModel(id string, loginModel *model.Login, ctx ctx.Cont
// Replaced replace other user // Replaced replace other user
func (e *Enforcer) Replaced(id string, device string) error { func (e *Enforcer) Replaced(id string, device string) error {
var err error
if session := e.GetSession(id); session != nil { if session := e.GetSession(id); session != nil {
// get by login device // get by login device
tokenSignList := session.GetFilterTokenSign(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 { if tokenSign, ok := element.Value.(*model.TokenSign); ok {
elementV := tokenSign.Value elementV := tokenSign.Value
session.RemoveTokenSign(elementV) session.RemoveTokenSign(elementV)
err = e.updateSession(id, session)
if err != nil {
return err
}
// sign token replaced // 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 { if err != nil {
return err return err
} }
@@ -264,7 +273,6 @@ func (e *Enforcer) Replaced(id string, device string) error {
} }
} }
} }
} }
return nil return nil
} }
@@ -377,8 +385,12 @@ func (e *Enforcer) Kickout(id string, device string) error {
if tokenSign, ok := element.Value.(*model.TokenSign); ok { if tokenSign, ok := element.Value.(*model.TokenSign); ok {
elementV := tokenSign.Value elementV := tokenSign.Value
session.RemoveTokenSign(elementV) session.RemoveTokenSign(elementV)
err := e.updateSession(id, session)
if err != nil {
return err
}
// sign token kicked // 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 { if err != nil {
return err return err
} }

View File

@@ -93,6 +93,10 @@ func (e *Enforcer) logoutByToken(token string) error {
if session != nil { if session != nil {
// delete tokenSign // delete tokenSign
session.RemoveTokenSign(token) session.RemoveTokenSign(token)
err = e.updateSession(id, session)
if err != nil {
return err
}
} }
// check TokenSignList length, if length == 0, delete this session // check TokenSignList length, if length == 0, delete this session
if session != nil && session.TokenSignList.Len() == 0 { if session != nil && session.TokenSignList.Len() == 0 {