Spring security 如何開放 Swagger 訪問權限
Spring security 開放 Swagger 訪問權限
開放這四個目錄
搞定
.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信息,隻要把他們加到攔截器的排除列表中即可
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/"); } }
網上找的資料中大部分隻說添加這個
@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/"); }
無數次的實驗發現這兩個方法都需要重寫,隻加任何一個都無法生效。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Swagger2配置方式(解決404報錯)
- springboot詳解整合swagger方案
- 詳解SpringBoot禁用Swagger的三種方式
- 全網最全SpringBoot集成swagger的詳細教程
- springboot更新配置Swagger3的一些小技巧