From c8bcfa19d64ba1bcb28354165b80eb286ac77165 Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Sat, 27 Apr 2024 01:59:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=96=87=E6=A1=A3=E9=97=AE?= =?UTF-8?q?=E7=AD=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sa-token-doc/more/common-questions.md | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/sa-token-doc/more/common-questions.md b/sa-token-doc/more/common-questions.md index a6b3d68e..0b87c7f2 100644 --- a/sa-token-doc/more/common-questions.md +++ b/sa-token-doc/more/common-questions.md @@ -481,7 +481,7 @@ class MyConfiguration { 2. 在写路由匹配规则时,避免使 `**` 之后再出现内容。 3. 将项目的路由匹配机制改为 `ant_path_matcher`。 -先改项目的: +步骤1:先改项目的: ``` yml spring: mvc: @@ -489,7 +489,7 @@ spring: matching-strategy: ant_path_matcher ``` -再改 Sa-Token 的: +步骤2:再改 Sa-Token 的: ``` java /** * 自定义 SaTokenContext 实现类,重写 matchPath 方法,切换为 ant_path_matcher 模式,使之可以支持 `**` 之后再出现内容 @@ -506,9 +506,32 @@ public class SaTokenContextByPatternsRequestCondition extends SaTokenContextForS } ``` +**注意点:** +SpringBoot2.x 的 `WebFlux`或 `SC Gateway` 项目,按照上述步骤改造,可能会报错 +``` html +java.lang.NoClassDefFoundError: org/springframework/web/servlet/mvc/condition/PatternsRequestCondition +``` +只需要将“步骤2”中的代码 `return SaPatternsRequestConditionHolder.match(pattern, path);` +更换为 `return SaPathMatcherHolder.getPathMatcher().match(pattern, path);` 即可,例如: + +``` java +/** + * 自定义 SaTokenContext 实现类,重写 matchPath 方法,切换为 ant_path_matcher 模式,使之可以支持 `**` 之后再出现内容 + */ +@Primary +@Component +public class SaTokenContextByPatternsRequestCondition extends SaTokenContextForSpringReactor { + + @Override + public boolean matchPath(String pattern, String path) { + return SaPathMatcherHolder.getPathMatcher().match(pattern, path); + } + +} +```