From 5b60dd29e8f0c9d82fa54051b3c22d76543a362b Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 20 九月 2024 10:37:29 +0800
Subject: [PATCH] 修改权限控制逻辑

---
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/filter/AuthFilter.java                        |   10 ++
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/filter/IgnoreWhiteProperties.java             |   31 +++++++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/filter/AuthFilter.java            |   10 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java          |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/filter/IgnoreWhiteProperties.java |   31 +++++++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/IgnoreWhiteProperties.java               |   31 +++++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java                          |   10 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/AuthFilter.java                      |   10 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/IgnoreWhiteProperties.java           |   31 +++++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/IgnoreWhiteProperties.java               |   31 +++++++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/AuthFilter.java                          |   10 ++
 11 files changed, 207 insertions(+), 0 deletions(-)

diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/filter/AuthFilter.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/filter/AuthFilter.java
index 9b0c010..e9dcae1 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/filter/AuthFilter.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/filter/AuthFilter.java
@@ -12,6 +12,7 @@
 import org.apache.logging.log4j.core.config.Order;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
@@ -42,11 +43,20 @@
 	@Resource
 	private ISysUserService sysUserService;
 	
+	@Autowired
+	private IgnoreWhiteProperties ignoreWhite;
+	
 	
 	@Override
 	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
 		HttpServletRequest request = (HttpServletRequest) servletRequest;
 		HttpServletResponse response = (HttpServletResponse) servletResponse;
+		// 跳过不需要验证的路径
+		String url = request.getRequestURI();
+		if (StringUtils.matches(url, ignoreWhite.getWhites())) {
+			filterChain.doFilter(request, response);
+			return;
+		}
 		String userid = request.getHeader("user_id");
 		if(StringUtils.isEmpty(userid)){
 			filterChain.doFilter(request, response);
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/filter/IgnoreWhiteProperties.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/filter/IgnoreWhiteProperties.java
new file mode 100644
index 0000000..697c631
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/filter/IgnoreWhiteProperties.java
@@ -0,0 +1,31 @@
+package com.ruoyi.system.filter;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 放行白名单配置
+ *
+ * @author ruoyi
+ */
+@Configuration
+@RefreshScope
+@ConfigurationProperties(prefix = "security.ignore")
+public class IgnoreWhiteProperties {
+	/**
+	 * 放行白名单配置,网关不校验此处的白名单
+	 */
+	private List<String> whites = new ArrayList<>();
+	
+	public List<String> getWhites() {
+		return whites;
+	}
+	
+	public void setWhites(List<String> whites) {
+		this.whites = whites;
+	}
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
index ebda806..af6db93 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -799,6 +799,8 @@
         appUserService.updateById(byId);
         return R.ok();
     }
+    
+    
     //已签到日期
     @ApiOperation(value = "本月已签到日期", tags = {"小程序-个人中心-签到"})
     @GetMapping(value = "/user/has/sign")
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/AuthFilter.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/AuthFilter.java
index a529a5f..9acaeb0 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/AuthFilter.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/AuthFilter.java
@@ -11,6 +11,7 @@
 import org.apache.logging.log4j.core.config.Order;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
@@ -40,12 +41,21 @@
 	@Lazy
 	@Resource
 	private SysUserClient sysUserClient;
+	
+	@Autowired
+	private IgnoreWhiteProperties ignoreWhite;
 
 
 	@Override
 	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
 		HttpServletRequest request = (HttpServletRequest) servletRequest;
 		HttpServletResponse response = (HttpServletResponse) servletResponse;
+		// 跳过不需要验证的路径
+		String url = request.getRequestURI();
+		if (StringUtils.matches(url, ignoreWhite.getWhites())) {
+			filterChain.doFilter(request, response);
+			return;
+		}
 		String userid = request.getHeader("user_id");
 		if(StringUtils.isEmpty(userid)){
 			filterChain.doFilter(request, response);
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/IgnoreWhiteProperties.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/IgnoreWhiteProperties.java
new file mode 100644
index 0000000..a89b9f3
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/IgnoreWhiteProperties.java
@@ -0,0 +1,31 @@
+package com.ruoyi.account.filter;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 放行白名单配置
+ *
+ * @author ruoyi
+ */
+@Configuration
+@RefreshScope
+@ConfigurationProperties(prefix = "security.ignore")
+public class IgnoreWhiteProperties {
+	/**
+	 * 放行白名单配置,网关不校验此处的白名单
+	 */
+	private List<String> whites = new ArrayList<>();
+	
+	public List<String> getWhites() {
+		return whites;
+	}
+	
+	public void setWhites(List<String> whites) {
+		this.whites = whites;
+	}
+}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/filter/AuthFilter.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/filter/AuthFilter.java
index 467e29a..a7892f8 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/filter/AuthFilter.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/filter/AuthFilter.java
@@ -11,6 +11,7 @@
 import org.apache.logging.log4j.core.config.Order;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
@@ -41,11 +42,20 @@
 	@Resource
 	private SysUserClient sysUserClient;
 	
+	@Autowired
+	private IgnoreWhiteProperties ignoreWhite;
+	
 	
 	@Override
 	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
 		HttpServletRequest request = (HttpServletRequest) servletRequest;
 		HttpServletResponse response = (HttpServletResponse) servletResponse;
+		// 跳过不需要验证的路径
+		String url = request.getRequestURI();
+		if (StringUtils.matches(url, ignoreWhite.getWhites())) {
+			filterChain.doFilter(request, response);
+			return;
+		}
 		String userid = request.getHeader("user_id");
 		if(StringUtils.isEmpty(userid)){
 			filterChain.doFilter(request, response);
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/filter/IgnoreWhiteProperties.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/filter/IgnoreWhiteProperties.java
new file mode 100644
index 0000000..153801a
--- /dev/null
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/filter/IgnoreWhiteProperties.java
@@ -0,0 +1,31 @@
+package com.ruoyi.chargingPile.filter;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 放行白名单配置
+ *
+ * @author ruoyi
+ */
+@Configuration
+@RefreshScope
+@ConfigurationProperties(prefix = "security.ignore")
+public class IgnoreWhiteProperties {
+	/**
+	 * 放行白名单配置,网关不校验此处的白名单
+	 */
+	private List<String> whites = new ArrayList<>();
+	
+	public List<String> getWhites() {
+		return whites;
+	}
+	
+	public void setWhites(List<String> whites) {
+		this.whites = whites;
+	}
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java
index bebbace..a590248 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java
@@ -11,6 +11,7 @@
 import org.apache.logging.log4j.core.config.Order;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
@@ -41,11 +42,20 @@
 	@Resource
 	private SysUserClient sysUserClient;
 	
+	@Autowired
+	private IgnoreWhiteProperties ignoreWhite;
+	
 	
 	@Override
 	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
 		HttpServletRequest request = (HttpServletRequest) servletRequest;
 		HttpServletResponse response = (HttpServletResponse) servletResponse;
+		// 跳过不需要验证的路径
+		String url = request.getRequestURI();
+		if (StringUtils.matches(url, ignoreWhite.getWhites())) {
+			filterChain.doFilter(request, response);
+			return;
+		}
 		String userid = request.getHeader("user_id");
 		if(StringUtils.isEmpty(userid)){
 			filterChain.doFilter(request, response);
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/IgnoreWhiteProperties.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/IgnoreWhiteProperties.java
new file mode 100644
index 0000000..01728a9
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/IgnoreWhiteProperties.java
@@ -0,0 +1,31 @@
+package com.ruoyi.order.filter;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 放行白名单配置
+ *
+ * @author ruoyi
+ */
+@Configuration
+@RefreshScope
+@ConfigurationProperties(prefix = "security.ignore")
+public class IgnoreWhiteProperties {
+	/**
+	 * 放行白名单配置,网关不校验此处的白名单
+	 */
+	private List<String> whites = new ArrayList<>();
+	
+	public List<String> getWhites() {
+		return whites;
+	}
+	
+	public void setWhites(List<String> whites) {
+		this.whites = whites;
+	}
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/AuthFilter.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/AuthFilter.java
index d1e25ba..efd1149 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/AuthFilter.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/AuthFilter.java
@@ -11,6 +11,7 @@
 import org.apache.logging.log4j.core.config.Order;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
@@ -41,11 +42,20 @@
 	@Resource
 	private SysUserClient sysUserClient;
 	
+	@Autowired
+	private IgnoreWhiteProperties ignoreWhite;
+	
 	
 	@Override
 	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
 		HttpServletRequest request = (HttpServletRequest) servletRequest;
 		HttpServletResponse response = (HttpServletResponse) servletResponse;
+		// 跳过不需要验证的路径
+		String url = request.getRequestURI();
+		if (StringUtils.matches(url, ignoreWhite.getWhites())) {
+			filterChain.doFilter(request, response);
+			return;
+		}
 		String userid = request.getHeader("user_id");
 		if(StringUtils.isEmpty(userid)){
 			filterChain.doFilter(request, response);
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/IgnoreWhiteProperties.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/IgnoreWhiteProperties.java
new file mode 100644
index 0000000..90a242f
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/IgnoreWhiteProperties.java
@@ -0,0 +1,31 @@
+package com.ruoyi.other.filter;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 放行白名单配置
+ *
+ * @author ruoyi
+ */
+@Configuration
+@RefreshScope
+@ConfigurationProperties(prefix = "security.ignore")
+public class IgnoreWhiteProperties {
+	/**
+	 * 放行白名单配置,网关不校验此处的白名单
+	 */
+	private List<String> whites = new ArrayList<>();
+	
+	public List<String> getWhites() {
+		return whites;
+	}
+	
+	public void setWhites(List<String> whites) {
+		this.whites = whites;
+	}
+}

--
Gitblit v1.7.1