Spring security 開放 Swagger 訪問權限
開放這四個目錄
搞定
1
2
3
4
|
.antMatchers( "/swagger-ui.html" ).permitAll() .antMatchers( "/webjars/**" ).permitAll() .antMatchers( "/v2/**" ).permitAll() .antMatchers( "/swagger-resources/**" ).permitAll() |
spring boot 加入攔截器后swagger不能訪問
spring boot 加入攔截器后swagger不能訪問問題
未加入攔截器時,swagger可以正常訪問接口信息,但是加入攔截器之后swagger就不能訪問了
原因分析
不能訪問的原因的swagger的內置接口被攔截器攔下來了
圖片中可以看到swagger的所有請求的url信息,只要把他們加到攔截器的排除列表中即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
package com.trimps928.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; /** * @author liubing * @version 2018-06-26 * 攔截器配置 **/ @Configuration public class MyWebAppConfig extends WebMvcConfigurationSupport { @Bean LoginInterceptor localInterceptor() { return new LoginInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(localInterceptor()) .addPathPatterns( "/**" ) .excludePathPatterns( "/user/login" ) .excludePathPatterns( "/swagger-resources/**" , "/webjars/**" , "/v2/**" , "/swagger-ui.html/**" ); } @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler( "swagger-ui.html" ) .addResourceLocations( "classpath:/META-INF/resources/" ); registry.addResourceHandler( "/webjars/**" ) .addResourceLocations( "classpath:/META-INF/resources/webjars/" ); } } |
網上找的資料中大部分只說添加這個
1
2
3
4
5
6
7
|
@Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(localInterceptor()) .addPathPatterns( "/**" ) .excludePathPatterns( "/user/login" ) .excludePathPatterns( "/swagger-resources/**" , "/webjars/**" , "/v2/**" , "/swagger-ui.html/**" ); } |
或者只添加
1
2
3
4
5
6
7
|
@Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler( "swagger-ui.html" ) .addResourceLocations( "classpath:/META-INF/resources/" ); registry.addResourceHandler( "/webjars/**" ) .addResourceLocations( "classpath:/META-INF/resources/webjars/" ); } |
無數次的實驗發現這兩個方法都需要重寫,只加任何一個都無法生效。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://haoxuanli.blog.csdn.net/article/details/104422027