修复路由鉴权文档示例错误之处

This commit is contained in:
click33 2021-09-22 10:17:14 +08:00
parent a0715b8aea
commit 854774a1f1
3 changed files with 12 additions and 9 deletions

View File

@ -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。

View File

@ -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()` 会停止匹配,直接返回结果到前端。

View File

@ -251,6 +251,9 @@
<a href="http://www.dchealth.com/" target="_blank" title="神州医疗">
<img src="https://oss.dev33.cn/sa-token/com/shenzhouyiliao.png">
</a>
<a href="https://www.quoting.cn/" target="_blank" title="引止">
<img src="https://oss.dev33.cn/sa-token/com/yinzhi.png">
</a>
</div>
<div style="height: 10px; clear: both;"></div>