mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-08-23 22:11:29 +08:00
完善文档
This commit is contained in:
parent
0877312d19
commit
cb97d05834
@ -94,8 +94,17 @@
|
||||
### Q:我使用拦截器鉴权时,明明排除了某个路径却仍然被拦截了?
|
||||
- 可能1:你的项目可能是跨域了,先把跨域问题解决掉,参考:[解决跨域问题](/fun/cors-filter)
|
||||
- 可能2:你访问的接口可能是404了,SpringBoot环境下如果访问接口404后,会被转发到`/error`,然后被再次拦截。请确保你访问的 path 有对应的 Controller 承接!
|
||||
- 可能3:可能这里并没有拦截,但是又被其他地方拦截了,请仔细查看一下控制台抛出的堆栈信息,定位一下到底是哪行代码拦截住这个请求的。
|
||||
- 可能3:可能这里并没有拦截,但是又被其他地方拦截了。请先把这个拦截器给注释掉,看看还会不会拦截,如果依然拦截,那说明不是这个拦截器的锅,请仔细查看一下控制台抛出的堆栈信息,定位一下到底是哪行代码拦截住这个请求的。
|
||||
- 可能4:后端拦截的 path 未必是你前端访问的这个path,建议先打印一下 path 信息,看看和你预想的是否一致,再做分析。
|
||||
- 可能5:你写了多个匹配规则,请求只越过了第一个规则,被其它规则拦下了,例如以下代码:
|
||||
``` java
|
||||
registry.addInterceptor(new SaInterceptor(handler -> {
|
||||
SaRouter.match("/**").notMatch("/user/doLogin").check(r -> StpUtil.checkLogin()); // 第1个规则
|
||||
SaRouter.match("/**").notMatch("/article/getList").check(r -> StpUtil.checkLogin()); // 第2个规则
|
||||
SaRouter.match("/**").notMatch("/goods/getList").check(r -> StpUtil.checkLogin()); // 第3个规则
|
||||
})).addPathPatterns("/**");
|
||||
```
|
||||
以上代码,当你未登录访问 `/user/doLogin` 时,会被第1条规则越过,然后被第2条拦下,校验登录,然后抛出异常:`NotLoginException:xxx`
|
||||
|
||||
|
||||
### Q:有时候我不加 Token 也可以通过鉴权,请问是怎么回事?
|
||||
|
@ -66,7 +66,7 @@ public class SaTokenConfigure implements WebMvcConfigurer {
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
// 注册路由拦截器,自定义认证规则
|
||||
registry.addInterceptor(new SaInterceptor((req, res, handler) -> {
|
||||
registry.addInterceptor(new SaInterceptor(handler -> {
|
||||
|
||||
// 登录认证 -- 拦截所有路由,并排除/user/doLogin 用于开放登录
|
||||
SaRouter.match("/**", "/user/doLogin", r -> StpUtil.checkLogin());
|
||||
@ -141,7 +141,7 @@ SaRouter
|
||||
使用 `SaRouter.stop()` 可以提前退出匹配链,例:
|
||||
|
||||
``` java
|
||||
registry.addInterceptor(new SaInterceptor((req, res, handler) -> {
|
||||
registry.addInterceptor(new SaInterceptor(handler -> {
|
||||
SaRouter.match("/**").check(r -> System.out.println("进入1"));
|
||||
SaRouter.match("/**").check(r -> System.out.println("进入2")).stop();
|
||||
SaRouter.match("/**").check(r -> System.out.println("进入3"));
|
||||
|
Loading…
Reference in New Issue
Block a user