mirror of
https://github.com/weloe/token-go.git
synced 2025-10-06 07:56:58 +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 {
|
||||
var err error
|
||||
// delete token-id
|
||||
id := e.GetIdByToken(token)
|
||||
id := e.getIdByToken(token)
|
||||
if id == "" {
|
||||
return errors.New("user not logged in")
|
||||
}
|
||||
@@ -457,7 +457,13 @@ func (e *Enforcer) GetIdByToken(token string) string {
|
||||
if token == "" {
|
||||
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.
|
||||
@@ -593,6 +599,11 @@ func (e *Enforcer) UpdateSession(id string, session *model.Session) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e *Enforcer) UpdateSessionTimeout(id string, timeout int64) error {
|
||||
err := e.notifyUpdateTimeout(id, timeout)
|
||||
return err
|
||||
}
|
||||
|
||||
func (e *Enforcer) GetTokenConfig() config.TokenConfig {
|
||||
return e.config
|
||||
}
|
||||
|
@@ -141,6 +141,11 @@ func (e *Enforcer) updateIdByToken(tokenValue string, id string) error {
|
||||
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 {
|
||||
err := e.notifySetStr(e.spliceBannedKey(id, service), strconv.Itoa(level), time)
|
||||
return err
|
||||
|
Reference in New Issue
Block a user