swagger拦截器放行放开

本文分享了一次解决Swagger无法正常使用的问题经历。作者在使用带有JWT拦截器的应用中遇到Swagger无法打开的情况,最终通过调整拦截器配置,排除了Swagger相关路径得以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个问题困扰了几小时,一开始好好的后面加入拦截器就没有用过swagger,过几天写完接口才来用发现用不了了,查了好久解决了好久都不行,后面把拦截器代码注释后就能打开了,发现是没放行的原因,加入下方swagger的资源路径即可,如果还是打不开估计是新版增加了其它资源,重新放开即可

registry.addInterceptor(getJwtInterceptor())
                //拦截所有请求,通过判断Token是否 合法 来决定是否需要登录
                .addPathPatterns("/**")
                //排除请求 放行接口 不做验证Token操作
                .excludePathPatterns(
                        "/user/login",)
                        //放行swagger
                .excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**");;
Swagger拦截器拦截返回 404 的问题通常是因为某些配置导致 Swagger 请求未正确路由到对应的资源文件或 API 文档生成服务。以下是可能导致此现象的原因及解决方案: ### 原因分析 1. **Spring Security 或其他安全框架**:如果项目中有启用 Spring Security 等安全框架,并对所有请求进行了权限控制,而没有放开 `/v2/api-docs` 和 `swagger-ui.html` 相关路径,则可能会导致访问不到 Swagger 页面。 2. **自定义拦截器设置错误**:如果你手动添加了拦截器并且没有排除掉 Swagger 所需的相关 URL 模式,那么这些请求会被拦截并阻止。 3. **静态资源配置缺失**:部分情况下需要确保将前端相关的静态资源(如 HTML、CSS、JS 文件等)映射好,否则即使后端支持也无法正常加载页面内容。 ### 解决方案 #### 针对 Spring Boot + Spring Security 用户 ```java @Override protected void configure(HttpSecurity http) throws Exception { // 放行swagger相关资源 http.authorizeRequests() .antMatchers("/v2/api-docs", "/configuration/ui", "/swagger-resources/**", "/configuration/security", "/swagger-ui.html", "/webjars/**").permitAll() ... // 其他规则保持不变 } ``` 同时也要确认是否引入正确的依赖版本以及启动类是否有标注开启注解比如 @EnableSwagger2 。 另外一种情况就是检查你的application.properties或者是yaml里关于spring.resources.static-locations这个属性值有没有包含classpath:/META-INF/resources/这条路劲因为默认的就是在那里存放着那些html css js之类的静态文档. 最后重启应用再试一次看看能不能成功打开http://localhost:8080/swagger-ui.html网址即可验证效果.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值