From d2b9cd27970c754da35e951b4cb5f6e7a6fcdea1 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期四, 09 一月 2025 14:27:52 +0800
Subject: [PATCH] update 优化 数据权限 判断当前注解不满足模板则跳过
---
ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/UndertowConfig.java | 31 ++++++++++++++++++++++++++++++-
1 files changed, 30 insertions(+), 1 deletions(-)
diff --git a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/UndertowConfig.java b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/UndertowConfig.java
index ac50dd2..84f88ff 100644
--- a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/UndertowConfig.java
+++ b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/config/UndertowConfig.java
@@ -1,6 +1,8 @@
package org.dromara.common.web.config;
import io.undertow.server.DefaultByteBufferPool;
+import io.undertow.server.handlers.DisallowedMethodsHandler;
+import io.undertow.util.HttpString;
import io.undertow.websockets.jsr.WebSocketDeploymentInfo;
import org.dromara.common.core.utils.SpringUtils;
import org.springframework.boot.autoconfigure.AutoConfiguration;
@@ -16,18 +18,45 @@
@AutoConfiguration
public class UndertowConfig implements WebServerFactoryCustomizer<UndertowServletWebServerFactory> {
+ /**
+ * 鑷畾涔� Undertow 閰嶇疆
+ * <p>
+ * 涓昏閰嶇疆鍐呭鍖呮嫭锛�
+ * 1. 閰嶇疆 WebSocket 閮ㄧ讲淇℃伅
+ * 2. 鍦ㄨ櫄鎷熺嚎绋嬫ā寮忎笅浣跨敤铏氭嫙绾跨▼姹�
+ * 3. 绂佺敤涓嶅畨鍏ㄧ殑 HTTP 鏂规硶锛屽 CONNECT銆乀RACE銆乀RACK
+ * </p>
+ *
+ * @param factory Undertow 鐨� Web 鏈嶅姟鍣ㄥ伐鍘�
+ */
@Override
public void customize(UndertowServletWebServerFactory factory) {
factory.addDeploymentInfoCustomizers(deploymentInfo -> {
+ // 閰嶇疆 WebSocket 閮ㄧ讲淇℃伅锛岃缃� WebSocket 浣跨敤鐨勭紦鍐插尯姹�
WebSocketDeploymentInfo webSocketDeploymentInfo = new WebSocketDeploymentInfo();
webSocketDeploymentInfo.setBuffers(new DefaultByteBufferPool(true, 1024));
deploymentInfo.addServletContextAttribute("io.undertow.websockets.jsr.WebSocketDeploymentInfo", webSocketDeploymentInfo);
- // 浣跨敤铏氭嫙绾跨▼
+
+ // 濡傛灉鍚敤浜嗚櫄鎷熺嚎绋嬶紝閰嶇疆 Undertow 浣跨敤铏氭嫙绾跨▼姹�
if (SpringUtils.isVirtual()) {
+ // 鍒涘缓铏氭嫙绾跨▼姹狅紝绾跨▼姹犲墠缂�涓� "undertow-"
VirtualThreadTaskExecutor executor = new VirtualThreadTaskExecutor("undertow-");
+ // 璁剧疆铏氭嫙绾跨▼姹犱负鎵ц鍣ㄥ拰寮傛鎵ц鍣�
deploymentInfo.setExecutor(executor);
deploymentInfo.setAsyncExecutor(executor);
}
+
+ // 閰嶇疆绂佹鏌愪簺涓嶅畨鍏ㄧ殑 HTTP 鏂规硶锛堝 CONNECT銆乀RACE銆乀RACK锛�
+ deploymentInfo.addInitialHandlerChainWrapper(handler -> {
+ // 绂佹涓変釜鏂规硶 CONNECT/TRACE/TRACK 涔熸槸涓嶅畨鍏ㄧ殑 閬垮厤鐖櫕楠氭壈
+ HttpString[] disallowedHttpMethods = {
+ HttpString.tryFromString("CONNECT"),
+ HttpString.tryFromString("TRACE"),
+ HttpString.tryFromString("TRACK")
+ };
+ // 浣跨敤 DisallowedMethodsHandler 鎷︽埅骞舵嫆缁濊繖浜涙柟娉曠殑璇锋眰
+ return new DisallowedMethodsHandler(handler, disallowedHttpMethods);
+ });
});
}
--
Gitblit v1.9.3