当前位置:首页 > 通信资讯 > 正文
目录
  • Spring security 开放 Swagger 访问权限
    • 开放这四个目录
  • spring boot 加入拦截器后swagger不能访问
    • 原因分析
      • 网上找的资料中大部分只说添加这个
      • 或者只添加

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的内置接口被拦截器拦下来了

spring security 如何开放 swag"}(spring security 如何开放 swag"})

图片中可以看到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

如果您对该产品感兴趣,请填写办理(客服微信:xiaoxiongyidong)

为您推荐:

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。