From 854774a1f118340833f659900296e57bf947bfb5 Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Wed, 22 Sep 2021 10:17:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B7=AF=E7=94=B1=E9=89=B4?= =?UTF-8?q?=E6=9D=83=E6=96=87=E6=A1=A3=E7=A4=BA=E4=BE=8B=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E4=B9=8B=E5=A4=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sa-token-doc/doc/more/common-questions.md | 9 +++++---- sa-token-doc/doc/use/route-check.md | 9 ++++----- sa-token-doc/index.html | 3 +++ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/sa-token-doc/doc/more/common-questions.md b/sa-token-doc/doc/more/common-questions.md index d5a493ba..35cba865 100644 --- a/sa-token-doc/doc/more/common-questions.md +++ b/sa-token-doc/doc/more/common-questions.md @@ -10,10 +10,11 @@ ### 报错:非Web上下文无法获取Request? 报错原因:Sa-Token 的部分 API 只能在 Web 上下文中调用,报这个错说明你调用 Sa-Token 的地方不在 Web 上下文中,请排查: -1. 在 main 在方法中调用了 Sa-Token 的API -2. 在带有 `@Async` 注解的方法中调用了 Sa-Token 的API -3. 在一些丢失web上下文的子线程中调用了 Sa-Token 的API,例如 `MyBatis-Plus` 的 `insertFill` 自动填充 -4. 在一些非 Http 协议的 RPC 框架中(例如 Dubbo)调用了 Sa-Token 的API +1. 是否在 main 方法中调用了 Sa-Token 的API +2. 是否在带有 `@Async` 注解的方法中调用了 Sa-Token 的API +3. 是否在一些丢失web上下文的子线程中调用了 Sa-Token 的API,例如 `MyBatis-Plus` 的 `insertFill` 自动填充 +4. 是否在一些非 Http 协议的 RPC 框架中(例如 Dubbo)调用了 Sa-Token 的API +5. 是否在 SpringBoot 启动初始化的方法中调用了 Sa-Token 的API,例如`@PostConstruct` 解决方案:先获取你想要的值,再把这个值当做一个参数传递到这些方法中,而不是直接从方法内调用 Sa-Token 的API。 diff --git a/sa-token-doc/doc/use/route-check.md b/sa-token-doc/doc/use/route-check.md index 6270d41f..ee532e36 100644 --- a/sa-token-doc/doc/use/route-check.md +++ b/sa-token-doc/doc/use/route-check.md @@ -103,10 +103,6 @@ public class SaTokenConfigure implements WebMvcConfigurer { 使用 `SaRouter.stop()` 可以提前退出匹配链,例: ``` java -// 原写法 -registry.addInterceptor(SaRouteInterceptor.createPermissionVal("user")).addPathPatterns("/user/**"); - -// 改为以下方式,效果同上 registry.addInterceptor(new SaRouteInterceptor((req, res, handler) -> { SaRouter.match("/**", () -> System.out.println("进入1")); SaRouter.match("/**", () -> {System.out.println("进入2"); SaRouter.stop();}); @@ -115,11 +111,14 @@ registry.addInterceptor(new SaRouteInterceptor((req, res, handler) -> { ``` 如上示例,代码运行至第2条匹配链时,会在stop函数处提前退出整个匹配函数,从而忽略掉剩余的所有match匹配 -除了`stop()`函数,`SaRouter`还提供了 `SaRouter.back()` 函数,用于:停止匹配,结束执行,直接向前端返回结果 +除了`stop()`函数,`SaRouter`还提供了 `back()` 函数,用于:停止匹配,结束执行,直接向前端返回结果 ``` java SaRouter.match("/user/back", () -> SaRouter.back("执行back函数后将停止匹配,也不会进入Controller,而是直接将此参数作为返回值输出到前端")); ``` +`stop()` 与 `back()` 函数的区别在于: +- `SaRouter.stop()` 会停止匹配,进入Controller。 +- `SaRouter.back()` 会停止匹配,直接返回结果到前端。 diff --git a/sa-token-doc/index.html b/sa-token-doc/index.html index d0a4fecd..683146b9 100644 --- a/sa-token-doc/index.html +++ b/sa-token-doc/index.html @@ -251,6 +251,9 @@ + + +