swagger放行接口
时间: 2023-11-16 22:49:14 浏览: 133
在SpringBoot集成Shiro后,访问Swagger接口需要登录才能访问。要放行Swagger接口,可以在Shiro的配置文件中找到拦截器,将Swagger接口的路径加入到放行列表中。具体代码如下:
filterChainDefinitionMap.put("/docs", "anon");
filterChainDefinitionMap.put("/swagger-ui.html", "anon");
filterChainDefinitionMap.put("/webjars/springfox-swagger-ui/**", "anon");
filterChainDefinitionMap.put("/swagger-resources/**", "anon");
filterChainDefinitionMap.put("/v2/api-docs", "anon");
通过以上代码,即可实现对Swagger接口的放行。
相关问题
过滤器放行swagger
在开发Web应用时,通常会使用过滤器(Filter)来进行一些全局的请求处理,例如身份验证、授权、日志记录等。然而,有时候我们希望某些特定的请求能够绕过这些过滤器,例如Swagger文档的请求。以下是如何在Spring Boot应用中配置过滤器以放行Swagger请求的步骤:
1. **创建过滤器**:首先,创建一个自定义过滤器类,并实现`javax.servlet.Filter`接口。
```java
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 初始化过滤器
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
String uri = httpRequest.getRequestURI();
// 放行Swagger相关请求
if (uri.startsWith("/swagger") || uri.startsWith("/v2/api-docs")) {
chain.doFilter(request, response);
return;
}
// 其他请求的处理逻辑
// ...
}
@Override
public void destroy() {
// 销毁过滤器
}
}
```
2. **注册过滤器**:在Spring Boot应用中注册这个过滤器。可以通过Java配置类来完成。
```java
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean<MyFilter> myFilterRegistration() {
FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new MyFilter());
registration.addUrlPatterns("/*");
registration.setName("myFilter");
registration.setOrder(1);
return registration;
}
}
```
3. **配置Swagger**:确保Swagger的配置正确,并且其请求路径与过滤器中的放行路径一致。
```java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.demo"))
.paths(PathSelectors.any())
.build();
}
}
```
通过上述配置,所有以`/swagger`和`/v2/api-docs`开头的请求都会被过滤器放行,从而确保Swagger文档能够正常访问。
jwt放行swagger
要在Spring Boot项目中使用JWT并且放行Swagger,你需要进行以下步骤:
1. 首先,你需要在pom.xml文件中添加Swagger和JWT的依赖项。根据你的需求,添加下面两个依赖项之一:
- 引用中的依赖项:
```
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
```
- 或者引用中的依赖项:
```
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
```
- 同时,还需要添加JWT的依赖项,你可以根据你的需求选择合适的版本。
2. 接下来,在你的Spring Boot配置类中,配置Swagger的相关信息。你可以按照官方文档提供的说明进行配置。
3. 在JWT的配置类中,你需要添加一个拦截器或者过滤器来验证JWT的token。确保只有有效的token才能访问受保护的资源,并放行Swagger相关的路径。
4. 最后,你需要在Spring Security的配置类中配置放行Swagger的路径。例如,你可以使用`antMatchers`方法来配置:
```
http
.authorizeRequests()
.antMatchers("/swagger-ui/**", "/v2/api-docs", "/swagger-resources/**", "/webjars/**")
.permitAll()
// 其他的配置项
...
```
这样,你就可以使用JWT进行身份验证,并且放行Swagger相关的路径,以便进行测试。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [Springboot项目集成Shiro+JWT,同时集成swagger2](https://blog.csdn.net/weixin_43284510/article/details/89532526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *2* [后端——》JWT结合swagger进行接口安全认证](https://blog.csdn.net/nienianzhi1744/article/details/102622722)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文