From 87a0ccb7ed3f0c9bfd856169ef03de136cd1047d Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期四, 20 三月 2025 09:07:39 +0800
Subject: [PATCH] 高级安全防护
---
src/main/java/com/jsh/erp/filter/LogCostFilter.java | 44 ++++++++++++++++++++++++++++++++++++++------
1 files changed, 38 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/jsh/erp/filter/LogCostFilter.java b/src/main/java/com/jsh/erp/filter/LogCostFilter.java
index 8b8bee2..feaefe9 100644
--- a/src/main/java/com/jsh/erp/filter/LogCostFilter.java
+++ b/src/main/java/com/jsh/erp/filter/LogCostFilter.java
@@ -17,7 +17,10 @@
"/jshERP-boot/user/registerUser#/jshERP-boot/user/randomImage#" +
"/jshERP-boot/platformConfig/getPlatform#/jshERP-boot/v2/api-docs#/jshERP-boot/webjars#" +
"/jshERP-boot/systemConfig/static#/jshERP-boot/api/plugin/wechat/weChat/share#" +
- "/jshERP-boot/api/plugin/general-ledger/pdf/voucher#/jshERP-boot/api/plugin/tenant-statistics/tenantClean")})
+ "/jshERP-boot/api/plugin/general-ledger/pdf/voucher#/jshERP-boot/api/plugin/tenant-statistics/tenantClean#" +
+ "/jshERP-boot/swagger-ui.html#/jshERP-boot/swagger-resources#" +
+ "/jshERP-boot/doc.html#/jshERP-boot/swagger-resources/**#" +
+ "/jshERP-boot/v2/api-docs/**#/jshERP-boot/webjars/**")})
public class LogCostFilter implements Filter {
private static final String FILTER_PATH = "filterPath";
@@ -40,14 +43,26 @@
HttpServletRequest servletRequest = (HttpServletRequest) request;
HttpServletResponse servletResponse = (HttpServletResponse) response;
String requestUrl = servletRequest.getRequestURI();
- //具体,比如:处理若用户未登录,则跳转到登录页
- Object userId = redisService.getObjectFromSessionByKey(servletRequest,"userId");
- if(userId!=null) { //如果已登录,不阻止
+
+ if (isSwaggerRequest(requestUrl)) {
chain.doFilter(request, response);
return;
}
- if (requestUrl != null && (requestUrl.contains("/doc.html") ||
- requestUrl.contains("/user/login") || requestUrl.contains("/user/register"))) {
+
+ if (requestUrl != null && (
+ requestUrl.contains("/doc.html") ||
+ requestUrl.contains("/swagger-ui.html") ||
+ requestUrl.contains("/swagger-resources") ||
+ requestUrl.contains("/v2/api-docs") ||
+ requestUrl.contains("/webjars/") ||
+ requestUrl.contains("/user/login") ||
+ requestUrl.contains("/user/register"))) {
+ chain.doFilter(request, response);
+ return;
+ }
+
+ Object userId = redisService.getObjectFromSessionByKey(servletRequest,"userId");
+ if(userId!=null) { //如果已登录,不阻止
chain.doFilter(request, response);
return;
}
@@ -64,6 +79,23 @@
servletResponse.getWriter().write("loginOut");
}
}
+ private boolean isSwaggerRequest(String requestUrl) {
+ return requestUrl != null && (
+ requestUrl.contains("/doc.html") ||
+ requestUrl.contains("/swagger-ui.html") ||
+ requestUrl.contains("/swagger-resources") ||
+ requestUrl.contains("/v2/api-docs") ||
+ requestUrl.contains("/webjars/") ||
+ requestUrl.contains("/user/login") ||
+ requestUrl.contains("/user/register") ||
+ // 添加API尝试请求
+ requestUrl.contains("/cloudContent/getByType") || // 允许未登录访问的API
+ requestUrl.contains("/cloudContent/list") || // 允许未登录访问的API
+ requestUrl.contains("/sysDict/getByDictCodeAndItemText") || //允许查询字典值API
+ requestUrl.contains("/sms/send-code") || //
+ requestUrl.contains("/sms/login") //
+ );
+ }
@Override
public void destroy() {
--
Gitblit v1.9.3