From 3539379a9409ded6110f24460592186aab80a8cb Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 23 八月 2024 17:10:08 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile

---
 ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java |   92 ++++++++++++++-------------------------------
 1 files changed, 29 insertions(+), 63 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 1cd3f9c..0ec1a71 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
@@ -1,17 +1,13 @@
 package com.ruoyi.gateway.filter;
 
-import com.ruoyi.account.api.feignClient.AppUserClient;
-import com.ruoyi.account.api.model.TAppUser;
-import com.ruoyi.system.api.domain.SysUser;
-import com.ruoyi.system.api.feignClient.SysUserClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.gateway.filter.GatewayFilterChain;
 import org.springframework.cloud.gateway.filter.GlobalFilter;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.core.Ordered;
 import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
 import org.springframework.http.server.reactive.ServerHttpRequest;
 import org.springframework.stereotype.Component;
 import org.springframework.web.server.ServerWebExchange;
@@ -27,7 +23,6 @@
 import io.jsonwebtoken.Claims;
 import reactor.core.publisher.Mono;
 
-import javax.annotation.Resource;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -48,14 +43,6 @@
 	@Autowired
 	private RedisService redisService;
 	
-	@Lazy
-	@Resource
-	private AppUserClient appUserClient;
-	
-	@Lazy
-	@Resource
-	private SysUserClient sysUserClient;
-	
 	
 	
 	@Override
@@ -69,30 +56,31 @@
 			return chain.filter(exchange);
 		}
 		//防抖校验
-//		try {
-//			antiShake(request);
-//		}catch (Exception e){
-//			log.error("[重复提交]请求路径:{}", exchange.getRequest().getPath());
-//			return ServletUtils.webFluxResponseWriter(exchange.getResponse(), e.getMessage(), HttpStatus.SUCCESS);
-//		}
+		try {
+			antiShake(request);
+		}catch (Exception e){
+			log.error("[重复提交]请求路径:{}", exchange.getRequest().getPath());
+			return ServletUtils.webFluxResponseWriter(exchange.getResponse(), e.getMessage(), HttpStatus.SUCCESS);
+		}
 		
 		//校验账户是否有效
-//		try {
-//			verifyToken(request);
-//			verifyAccount(request);
-//		}catch (Exception e){
-//			return unauthorizedResponse(exchange, e.getMessage());
-//		}
+		try {
+			verifyToken(request);
+		}catch (Exception e){
+			return unauthorizedResponse(exchange, e.getMessage());
+		}
 		String token = getToken(request);
 		Claims claims = JwtUtils.parseToken(token);
 		String userkey = JwtUtils.getUserKey(claims);
 		String userid = JwtUtils.getUserId(claims);
 		String username = JwtUtils.getUserName(claims);
+		String userType = JwtUtils.getUserType(claims);
 		
 		// 设置用户信息到请求
 		addHeader(mutate, SecurityConstants.USER_KEY, userkey);
 		addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid);
 		addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username);
+		addHeader(mutate, SecurityConstants.USER_TYPE, userType);
 		// 内部请求来源参数清除
 		removeHeader(mutate, SecurityConstants.FROM_SOURCE);
 		return chain.filter(exchange.mutate().request(mutate.build()).build());
@@ -140,9 +128,19 @@
 	 * 防抖处理
 	 */
 	public void antiShake(ServerHttpRequest request) throws Exception{
+		HttpMethod method = request.getMethod();
+		if(HttpMethod.OPTIONS == method){
+			return;
+		}
 		HttpHeaders headers = request.getHeaders();
 		String client = headers.getFirst("client");
 		String timestamp = headers.getFirst("timestamp");
+		if(StringUtils.isEmpty(client)){
+			throw new RuntimeException("参数异常");
+		}
+		if(StringUtils.isEmpty(timestamp)){
+			throw new RuntimeException("参数异常");
+		}
 		String url = request.getURI().getPath();
 		Map<String, Object> cacheMap = redisService.getCacheMap(client);
 		if(null == cacheMap){
@@ -183,47 +181,15 @@
 		if (claims == null) {
 			throw new RuntimeException("令牌已过期或验证不正确!");
 		}
-		String userkey = JwtUtils.getUserKey(claims);
-		boolean islogin = redisService.hasKey(getTokenKey(userkey));
-		if (!islogin) {
-			throw new RuntimeException("登录状态已过期");
-		}
+//		String userkey = JwtUtils.getUserKey(claims);
+//		boolean islogin = redisService.hasKey(getTokenKey(userkey));
+//		if (!islogin) {
+//			throw new RuntimeException("登录状态已过期");
+//		}
 		String userid = JwtUtils.getUserId(claims);
 		String username = JwtUtils.getUserName(claims);
 		if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username)) {
 			throw new RuntimeException("令牌验证失败");
-		}
-	}
-	
-	/**
-	 * 校验账户是否有效
-	 * @param request
-	 * @throws Exception
-	 */
-	public void verifyAccount(ServerHttpRequest request) throws Exception{
-		String token = getToken(request);
-		Claims claims = JwtUtils.parseToken(token);
-		String userid = JwtUtils.getUserId(claims);
-		String userType = JwtUtils.getUserType(claims);
-		//管理后台用户
-		if ("system".equals(userType)) {
-			SysUser sysUser = sysUserClient.getSysUser(Long.valueOf(userid)).getData();
-			if(null == sysUser || "2".equals(sysUser.getDelFlag())){
-				throw new RuntimeException("无效的账户");
-			}
-			if("1".equals(sysUser.getStatus())){
-				throw new RuntimeException("账户已被停用,请联系系统管理员!");
-			}
-		}
-		//小程序用户
-		if ("applet".equals(userType)) {
-			TAppUser appUser = appUserClient.getUserById(Long.valueOf(userid)).getData();
-			if(null == appUser || appUser.getDelFlag() || 3 == appUser.getStatus()){
-				throw new RuntimeException("无效的账户");
-			}
-			if(2 == appUser.getStatus()){
-				throw new RuntimeException("账户已被冻结,请联系系统管理员!");
-			}
 		}
 	}
 	

--
Gitblit v1.7.1