From 8c6ed6820e53c27fa40973da285fd39a66424540 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期三, 07 五月 2025 14:03:08 +0800 Subject: [PATCH] 提交等保部分功能修改 --- ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java | 25 +++++++++++++++++++++++++ 1 files changed, 25 insertions(+), 0 deletions(-) diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java index ff02153..692591f 100644 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java +++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java @@ -25,6 +25,7 @@ import io.jsonwebtoken.Claims; import reactor.core.publisher.Mono; +import java.time.LocalDateTime; import java.util.HashMap; import java.util.Map; @@ -86,6 +87,10 @@ addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid); addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username); addHeader(mutate, SecurityConstants.USER_TYPE, userType); + //管理后台记录用户最后一次的操作时间,用于判定30分钟无操作后删除token,退出登录 + if("system".equals(userType)){ + addLastTime(userid, url); + } // 内部请求来源参数清除 removeHeader(mutate, SecurityConstants.FROM_SOURCE); return chain.filter(exchange.mutate().request(mutate.build()).build()); @@ -109,6 +114,26 @@ return ServletUtils.webFluxResponseWriter(exchange.getResponse(), msg, HttpStatus.UNAUTHORIZED); } + + /** + * 记录用户最后一次操作的时间 + * @param userid + * @param url + */ + private void addLastTime(String userid, String url){ + Object lastTime = redisService.getCacheObject("lastTime:" + userid); + if(null == lastTime){ + redisService.setCacheObject("lastTime:" + userid, System.currentTimeMillis()); + }else{ + Long last = Long.valueOf(lastTime.toString()); + //操作登录或者时间差值小于30分钟,写入新的数据到缓存中 + if("/auth/login".equals(url) || System.currentTimeMillis() - last < 1800000L){ + redisService.setCacheObject("lastTime:" + userid, System.currentTimeMillis()); + } + } + } + + /** * 获取缓存key */ -- Gitblit v1.7.1