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