diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenEventCenter.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenEventCenter.java index cd708942..7a83da71 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenEventCenter.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenEventCenter.java @@ -214,5 +214,17 @@ public class SaTokenEventCenter { listener.doLogoutSession(id); } } - + + /** + * 每次renew timeout时触发 + * + * @param tokenValue + * @param loginId + * @param timeout + */ + public static void doRenewTimeout(String tokenValue, Object loginId, long timeout) { + for (SaTokenListener listener : listenerList) { + listener.doRenewTimeout(tokenValue, loginId, timeout); + } + } } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java index 4fdff910..2912241f 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java @@ -69,5 +69,13 @@ public interface SaTokenListener { * @param id SessionId */ public void doLogoutSession(String id); - + + /** + * 执行renew超时时间操作的时触发 + * + * @param tokenValue + * @param loginId + * @param timeout + */ + public void doRenewTimeout(String tokenValue, Object loginId, long timeout); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForConsolePrint.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForConsolePrint.java index c13229c2..b4940075 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForConsolePrint.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForConsolePrint.java @@ -78,6 +78,18 @@ public class SaTokenListenerForConsolePrint implements SaTokenListener { println("Session[" + id + "]注销成功"); } + /** + * 每次更新超时时间后触发 + * + * @param tokenValue + * @param loginId + * @param timeout + */ + @Override + public void doRenewTimeout(String tokenValue, Object loginId, long timeout) { + println("帐号[" + loginId + "]更新超时时间成功!"); + } + /** * 日志输出的前缀 */ diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForSimple.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForSimple.java index 3ad3b7a6..9f999067 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForSimple.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForSimple.java @@ -52,4 +52,9 @@ public class SaTokenListenerForSimple implements SaTokenListener { } + @Override + public void doRenewTimeout(String tokenValue, Object loginId, long timeout) { + + } + } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java index 985dfa55..9f1377e7 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java @@ -1219,6 +1219,9 @@ public class StpLogic { if(isOpenActivityCheck()) { dao.updateTimeout(splicingKeyLastActivityTime(tokenValue), timeout); } + + // 通知更新超时事件 + SaTokenEventCenter.doRenewTimeout(tokenValue, loginId, timeout); } // ------------------- 角色验证操作 -------------------