!164 新增token超时更新事件监听方法

Merge pull request !164 from 视频怪物/dev
This commit is contained in:
孔明 2022-08-21 04:01:01 +00:00 committed by Gitee
commit f8210c6ca5
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
7 changed files with 55 additions and 5 deletions

View File

@ -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);
}
}
}

View File

@ -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);
}

View File

@ -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 + "]更新超时时间成功!");
}
/**
* 日志输出的前缀
*/

View File

@ -52,4 +52,9 @@ public class SaTokenListenerForSimple implements SaTokenListener {
}
@Override
public void doRenewTimeout(String tokenValue, Object loginId, long timeout) {
}
}

View File

@ -1219,6 +1219,9 @@ public class StpLogic {
if(isOpenActivityCheck()) {
dao.updateTimeout(splicingKeyLastActivityTime(tokenValue), timeout);
}
// 通知更新超时事件
SaTokenEventCenter.doRenewTimeout(tokenValue, loginId, timeout);
}
// ------------------- 角色验证操作 -------------------

View File

@ -47,8 +47,13 @@
### 加了注解进行鉴权认证,不生效?
注解鉴权功能默认关闭两种方式任选其一进行打开注册注解拦截器、集成AOP模块参考[注解式鉴权](/use/at-check)
如果已经打开仍然没有效果,加群说明一下复现步骤
1. 注解鉴权功能默认关闭两种方式任选其一进行打开注册注解拦截器、集成AOP模块参考[注解式鉴权](/use/at-check)
2. 在Spring环境中, 如果同时配置了`WebMvcConfigurer`和`WebMvcConfigurationSupport`时, 也会导致拦截器失效.
**常见场景**: 很多项目中会在`WebMvcConfigurationSupport`中配置`addResourceHandlers`方法开放Swagger等相关静态资源映射, 同时基于Sa-Token添加了`WebMvcConfigurer`配置`addInterceptors`方法注册注解拦截器, 这样会导致注解拦截器失效.
**解决方案**: `WebMvcConfigurer`和`WebMvcConfigurationSupport`只选一个配置, 建议统一通过实现`WebMvcConfigurer`接口进行配置.
4. 如果以上步骤处理后仍然没有效果,加群说明一下复现步骤
### 有时候我不加 Token 也可以通过鉴权,请问是怎么回事?

View File

@ -78,7 +78,12 @@ public class MySaTokenListener implements SaTokenListener {
public void doLogoutSession(String id) {
System.out.println("---------- 自定义侦听器实现 doLogoutSession");
}
/** 每次更新token超时时间时触发 */
@Override
public void doRenewTimeout(String tokenValue, Object loginId, long timeout) {
System.out.println("帐号[" + loginId + "]更新超时时间成功!");
}
}
```