mirror of
https://github.com/weloe/token-go.git
synced 2025-10-05 15:36:50 +08:00
feat: support auto refresh token timeout When the user accesses.
This commit is contained in:
15
enforcer.go
15
enforcer.go
@@ -384,7 +384,7 @@ func (e *Enforcer) LogoutById(id string, device ...string) error {
|
|||||||
func (e *Enforcer) LogoutByToken(token string) error {
|
func (e *Enforcer) LogoutByToken(token string) error {
|
||||||
var err error
|
var err error
|
||||||
// delete token-id
|
// delete token-id
|
||||||
id := e.GetIdByToken(token)
|
id := e.getIdByToken(token)
|
||||||
if id == "" {
|
if id == "" {
|
||||||
return errors.New("user not logged in")
|
return errors.New("user not logged in")
|
||||||
}
|
}
|
||||||
@@ -457,7 +457,13 @@ func (e *Enforcer) GetIdByToken(token string) string {
|
|||||||
if token == "" {
|
if token == "" {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
return e.getIdByToken(token)
|
loginId := e.getIdByToken(token)
|
||||||
|
// auto refresh timeout, When the user accesses
|
||||||
|
if loginId != "" && e.config.AutoRenew {
|
||||||
|
_ = e.updateTokenTimeout(token, e.config.Timeout)
|
||||||
|
_ = e.UpdateSessionTimeout(loginId, e.config.Timeout)
|
||||||
|
}
|
||||||
|
return loginId
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsLogin check if user logged in by token.
|
// IsLogin check if user logged in by token.
|
||||||
@@ -593,6 +599,11 @@ func (e *Enforcer) UpdateSession(id string, session *model.Session) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *Enforcer) UpdateSessionTimeout(id string, timeout int64) error {
|
||||||
|
err := e.notifyUpdateTimeout(id, timeout)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (e *Enforcer) GetTokenConfig() config.TokenConfig {
|
func (e *Enforcer) GetTokenConfig() config.TokenConfig {
|
||||||
return e.config
|
return e.config
|
||||||
}
|
}
|
||||||
|
@@ -141,6 +141,11 @@ func (e *Enforcer) updateIdByToken(tokenValue string, id string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *Enforcer) updateTokenTimeout(token string, timeout int64) error {
|
||||||
|
err := e.notifyUpdateTimeout(e.spliceTokenKey(token), timeout)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (e *Enforcer) setBanned(id string, service string, level int, time int64) error {
|
func (e *Enforcer) setBanned(id string, service string, level int, time int64) error {
|
||||||
err := e.notifySetStr(e.spliceBannedKey(id, service), strconv.Itoa(level), time)
|
err := e.notifySetStr(e.spliceBannedKey(id, service), strconv.Itoa(level), time)
|
||||||
return err
|
return err
|
||||||
|
Reference in New Issue
Block a user