在springboot配置拦截器 然后Knife4j的请求都被拦截了怎么解决
时间: 2024-03-26 07:42:07 浏览: 190
如果您在 SpringBoot 中配置了拦截器,但是发现 Knife4j 的请求也被拦截了,您可以考虑在拦截器中添加一些例外,以允许 Knife4j 的请求通过。
具体来说,您可以在拦截器中重写 `preHandle` 方法,并在其中添加对 Knife4j 请求的判断和处理。以下是一个示例代码:
```java
public class YourInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String path = request.getRequestURI();
if (path.contains("/doc.html") || path.contains("/webjars/") || path.contains("/v2/api-docs") || path.contains("/swagger-resources/")) {
return true; // 放行 Knife4j 的请求
}
// 其他请求则按照您的拦截器逻辑进行处理
// 注意一定要返回 true 或 false,表示是否允许请求通过
}
// 省略其他方法
}
```
在上述代码中,我们判断了请求的路径是否包含 Knife4j 的相关路径,如果是,则直接放行,否则按照您的拦截器逻辑进行处理。
另外,您还需要在 SpringBoot 的配置文件中将 Knife4j 相关的路径添加到忽略列表中,以避免被拦截。例如:
```yaml
spring:
mvc:
ignored:
- /doc.html
- /webjars/**
- /v2/api-docs/**
- /swagger-resources/**
```
这样配置之后,您的拦截器就不会拦截 Knife4j 的请求了。
阅读全文