Spring|Spring security 如何开放 Swagger 访问权限
目录
- Spring security 开放 Swagger 访问权限
- 开放这四个目录
- spring boot 加入拦截器后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 * 拦截器配置 **/@Configurationpublic class MyWebAppConfig extends WebMvcConfigurationSupport {@BeanLoginInterceptor localInterceptor() {return new LoginInterceptor(); }@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(localInterceptor()).addPathPatterns("/**").excludePathPatterns("/user/login").excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**"); }@Overrideprotected 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/"); }
无数次的实验发现这两个方法都需要重写,只加任何一个都无法生效。
【Spring|Spring security 如何开放 Swagger 访问权限】以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 如何寻找情感问答App的分析切入点
- Activiti(一)SpringBoot2集成Activiti6
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- java中如何实现重建二叉树