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