C语言学习网

Spring security怎么开放Swagger访问权限

发表于:2022-08-20 作者:安全数据网编辑
编辑最后更新 2022年08月20日,这篇文章将为大家详细讲解有关Spring security怎么开放Swagger访问权限,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Spring security

这篇文章将为大家详细讲解有关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 * 拦截器配置 **/@Configurationpublic 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/"); }

无数次的实验发现这两个方法都需要重写,只加任何一个都无法生效。

关于"Spring security怎么开放Swagger访问权限"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0