Просмотр исходного кода

修复部分更新方法过滤失败与单*匹配不精确问题

JuJu лет назад: 5
Родитель
Сommit
60c815ab76

+ 22 - 6
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java

@@ -21,6 +21,9 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
21
     /** 星号 */
21
     /** 星号 */
22
     private static final String START = "*";
22
     private static final String START = "*";
23
 
23
 
24
+    /** 斜杠 */
25
+    private static final String SLASH = "/";
26
+
24
     /**
27
     /**
25
      * 获取参数不为空值
28
      * 获取参数不为空值
26
      * 
29
      * 
@@ -477,22 +480,27 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
477
 
480
 
478
             // 匹配前缀Pattern
481
             // 匹配前缀Pattern
479
             result = remainingURI.contains(prefixPattern);
482
             result = remainingURI.contains(prefixPattern);
483
+
484
+            // 匹配失败,直接返回
485
+            if (!result)
486
+                return false;
487
+
480
             // 已经没有星号,判断长度是否符合,并返回
488
             // 已经没有星号,判断长度是否符合,并返回
481
             if (formerStarOffset == -1)
489
             if (formerStarOffset == -1)
482
             {
490
             {
483
-                //清洗请求路径
484
-                if (remainingURI.endsWith("/")) {
491
+                // 清洗请求路径
492
+                if (remainingURI.endsWith(SLASH)) {
485
                     remainingURI = remainingURI.substring(0, remainingURI.length() - 1);
493
                     remainingURI = remainingURI.substring(0, remainingURI.length() - 1);
486
                 }
494
                 }
487
                 return remainingURI.length() == prefixPattern.length();
495
                 return remainingURI.length() == prefixPattern.length();
488
             }
496
             }
489
 
497
 
490
-            // 匹配失败,直接返回
491
-            if (!result)
492
-                return false;
493
-
494
             if (!isEmpty(prefixPattern))
498
             if (!isEmpty(prefixPattern))
495
             {
499
             {
500
+                // 如果前面还有路径 直接返回
501
+                if (!isEmpty(substringBefore(str, prefixPattern))) {
502
+                    return false;
503
+                }
496
                 remainingURI = substringAfter(str, prefixPattern);
504
                 remainingURI = substringAfter(str, prefixPattern);
497
             }
505
             }
498
 
506
 
@@ -500,6 +508,14 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
500
             latterStarOffset = indexOf(pattern, START, formerStarOffset + 1);
508
             latterStarOffset = indexOf(pattern, START, formerStarOffset + 1);
501
             suffixPattern = substring(pattern, formerStarOffset + 1, latterStarOffset > -1 ? latterStarOffset : pattern.length());
509
             suffixPattern = substring(pattern, formerStarOffset + 1, latterStarOffset > -1 ? latterStarOffset : pattern.length());
502
 
510
 
511
+            // 判断是否存在第二个 *
512
+            if (latterStarOffset == -1) {
513
+                // 判断是否还包含斜杠
514
+                if(remainingURI.contains(SLASH)) {
515
+                    return false;
516
+                }
517
+            }
518
+
503
             result = remainingURI.contains(suffixPattern);
519
             result = remainingURI.contains(suffixPattern);
504
             // 匹配失败,直接返回
520
             // 匹配失败,直接返回
505
             if (!result)
521
             if (!result)