From 60c815ab76306c6edf1e1f8511b14c168761a9c9 Mon Sep 17 00:00:00 2001
From: JuJu <857815116@qq.com>
Date: Sun, 28 Feb 2021 17:21:02 +0800
Subject: [PATCH] 修复部分更新方法过滤失败与单*匹配不精确问题
---
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java | 30 +++++++++++++++++++++++++-----
1 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
index e0bc15a..954dd03 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
@@ -21,6 +21,9 @@
/** 星号 */
private static final String START = "*";
+ /** 斜杠 */
+ private static final String SLASH = "/";
+
/**
* 获取参数不为空值
*
@@ -477,18 +480,27 @@
// 匹配前缀Pattern
result = remainingURI.contains(prefixPattern);
- // 已经没有星号,直接返回
- if (formerStarOffset == -1)
- {
- return result;
- }
// 匹配失败,直接返回
if (!result)
return false;
+ // 已经没有星号,判断长度是否符合,并返回
+ if (formerStarOffset == -1)
+ {
+ // 清洗请求路径
+ if (remainingURI.endsWith(SLASH)) {
+ remainingURI = remainingURI.substring(0, remainingURI.length() - 1);
+ }
+ return remainingURI.length() == prefixPattern.length();
+ }
+
if (!isEmpty(prefixPattern))
{
+ // 如果前面还有路径 直接返回
+ if (!isEmpty(substringBefore(str, prefixPattern))) {
+ return false;
+ }
remainingURI = substringAfter(str, prefixPattern);
}
@@ -496,6 +508,14 @@
latterStarOffset = indexOf(pattern, START, formerStarOffset + 1);
suffixPattern = substring(pattern, formerStarOffset + 1, latterStarOffset > -1 ? latterStarOffset : pattern.length());
+ // 判断是否存在第二个 *
+ if (latterStarOffset == -1) {
+ // 判断是否还包含斜杠
+ if(remainingURI.contains(SLASH)) {
+ return false;
+ }
+ }
+
result = remainingURI.contains(suffixPattern);
// 匹配失败,直接返回
if (!result)
--
Gitblit v1.9.3