From 31f29db19dede2cbf6988946b0dd8c8f153d1bd9 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Wed, 31 Jan 2024 20:40:11 +0800 Subject: [PATCH] =?UTF-8?q?refactor(auth/satoken):=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=9B=B4=E7=81=B5=E6=B4=BB=E7=9A=84=E5=8A=A8=E6=80=81=E5=8C=96?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E6=8B=A6=E6=88=AA=E9=89=B4=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 因为 lambda 表达式之外的代码只会在启动时执行一次,所以 excludePaths() 方法是无法做到动态化读取的, 若要在项目运行时动态读写,必须把调用 excludePaths() 的时机放在 lambda 里。 --- .../satoken/autoconfigure/SaTokenAutoConfiguration.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/continew-starter-auth/continew-starter-auth-satoken/src/main/java/top/charles7c/continew/starter/auth/satoken/autoconfigure/SaTokenAutoConfiguration.java b/continew-starter-auth/continew-starter-auth-satoken/src/main/java/top/charles7c/continew/starter/auth/satoken/autoconfigure/SaTokenAutoConfiguration.java index f7d8422f..8938de50 100644 --- a/continew-starter-auth/continew-starter-auth-satoken/src/main/java/top/charles7c/continew/starter/auth/satoken/autoconfigure/SaTokenAutoConfiguration.java +++ b/continew-starter-auth/continew-starter-auth-satoken/src/main/java/top/charles7c/continew/starter/auth/satoken/autoconfigure/SaTokenAutoConfiguration.java @@ -18,6 +18,7 @@ package top.charles7c.continew.starter.auth.satoken.autoconfigure; import cn.dev33.satoken.interceptor.SaInterceptor; import cn.dev33.satoken.jwt.StpLogicJwtForSimple; +import cn.dev33.satoken.router.SaRouter; import cn.dev33.satoken.stp.StpInterface; import cn.dev33.satoken.stp.StpLogic; import cn.dev33.satoken.stp.StpUtil; @@ -59,9 +60,9 @@ public class SaTokenAutoConfiguration implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { // 注册 Sa-Token 拦截器,校验规则为 StpUtil.checkLogin() 登录校验 - registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin())) - .addPathPatterns(StringConstants.PATH_PATTERN) - .excludePathPatterns(properties.getSecurity().getExcludes()); + registry.addInterceptor(new SaInterceptor(handle -> SaRouter.match(StringConstants.PATH_PATTERN) + .notMatch(properties.getSecurity().getExcludes()) + .check(r -> StpUtil.checkLogin()))).addPathPatterns(StringConstants.PATH_PATTERN); } /**