完善文档

This commit is contained in:
click33 2022-09-01 18:14:48 +08:00
parent 0877312d19
commit cb97d05834
2 changed files with 12 additions and 3 deletions

View File

@ -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条拦下校验登录然后抛出异常`NotLoginExceptionxxx`
### Q有时候我不加 Token 也可以通过鉴权,请问是怎么回事?

View File

@ -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"));