Swagger2不被SpringSecurity框架拦截的配置及说明

 更新时间:2023年03月29日 16:58:04   作者:指尖上跳动的旋律  
这篇文章主要介绍了Swagger2不被SpringSecurity框架拦截的配置及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Swagger2不被SpringSecurity框架拦截的配置

打算在SpringSecurity框架中集成Swagger2框架进行接口功能的运行及测试,发现Swagger2会被SpringSecurity框架拦截,导致我们在浏览器中访问不了Swagger2首页。       

解决这个问题的主要方法只需要在SpringSecurity的配置类中添加一个方法即可,博主的SpringSecurity的配置类定义为SecurityConfig,添加以下代码重启项目再访问即可;

/*
     * 解决Security访问Swagger2被拦截的问题;
     * */
    @Override
    public void configure(WebSecurity web) throws Exception {
    	// allow Swagger URL to be accessed without authentication
    			web.ignoring().antMatchers(
    	                "/swagger-ui.html",
    	                "/v2/api-docs", // swagger api json
    	                "/swagger-resources/configuration/ui", // 用来获取支持的动作
    	                "/swagger-resources", // 用来获取api-docs的URI
    	                "/swagger-resources/configuration/security", // 安全选项
    					"/swagger-resources/**",
    					//补充路径,近期在搭建swagger接口文档时,通过浏览器控制台发现该/webjars路径下的文件被拦截,故加上此过滤条件即可。(2020-10-23)
    					"/webjars/**"
    					
    					
    			);
    }

Spring security5 集成swagger2无法访问

主要还是spring security把 swagger需要访问的URL被拦截,不只是swagger-ui.html这个URL

查找网上的解决方案没一个好用的,然后自己在跳转重定向的方法里打印了引发跳转的URL,一个一个试出来的老铁。累啊~

话不多说,放图,配置security配置类即可

成功:

完整配置类代码:

package com.lw.bpczy.security.config;
 
 
import com.lw.bpczy.security.authentication.MyAuthenticationFailureHandler;
import com.lw.bpczy.security.authentication.MyAuthenticationSuccessHandler;
import com.lw.bpczy.security.authorization.MyAccessDeniedHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.cors.CorsUtils;
 
 
/**
* @author: Liang Shan
* @date: 2019-11-12 10:25
* @description: security安全配置
* WebSecurityConfigurerAdapter提供简洁的方式来创建webSecurityConfigurer
*/
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
 
    @Autowired
    private MyAuthenticationSuccessHandler successHandler;
    @Autowired
    private MyAuthenticationFailureHandler failureHandler;
    @Autowired
    private MyAccessDeniedHandler accessDeniedHandler;
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
    /*配置安全项*/
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.formLogin()
                .loginPage("/needLogin")
                .loginProcessingUrl("/login").permitAll()
                .successHandler(successHandler)
                .failureHandler(failureHandler)
                .and()
                .authorizeRequests()
                // 授权不需要登录权限的URL
                .antMatchers("/needLogin",
                             "/swagger*//**",
                             "/v2/api-docs",
                             "/webjars*//**").permitAll()
                .requestMatchers(CorsUtils::isPreFlightRequest).permitAll()
                .anyRequest().access("@rbacService.hasPermission(request,authentication)").
                and().exceptionHandling().accessDeniedHandler(accessDeniedHandler).
                and().cors().and().csrf().disable()
        ;
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java EE实现用户后台管理系统

    Java EE实现用户后台管理系统

    这篇文章主要为大家详细介绍了Java EE实现用户后台管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Java中的static的使用指南

    Java中的static的使用指南

    本文给大家简单总结了下java中的static的使用注意事项及方法,非常的实用,有需要的小伙伴可以参考下
    2016-04-04
  • springMVC配置环境实现文件上传和下载

    springMVC配置环境实现文件上传和下载

    这篇文章主要为大家详细介绍了springMVC配置环境实现文件上传和下载的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • java运行windows的cmd命令简单代码

    java运行windows的cmd命令简单代码

    这篇文章主要介绍了java运行windows的cmd命令简单代码,有需要的朋友可以参考一下
    2013-12-12
  • java应用开发之Mybatis通过Mapper代理自定义接口的实现

    java应用开发之Mybatis通过Mapper代理自定义接口的实现

    这篇文章主要介绍了java应用开发之Mybatis通过Mapper代理自定义接口的实现方式,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • Java数据结构与算法之单链表深入理解

    Java数据结构与算法之单链表深入理解

    这篇文章主要介绍了Java数据结构与算法之单链表深入理解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Java的jstack命令使用示例详解

    Java的jstack命令使用示例详解

    jstack 命令非常的简单,我们可以通过 jstack -h 或者 jstack -help 命令查看它的用法详情,今天通过本文重点给大家介绍Java的jstack命令使用,感兴趣的朋友一起看看吧
    2022-03-03
  • Spring Security  整体架构操作流程

    Spring Security  整体架构操作流程

    这篇文章主要介绍了Spring Security  整体架构操作流程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-07-07
  • Java中实现高清图片压缩的两种方案(最新推荐)

    Java中实现高清图片压缩的两种方案(最新推荐)

    文章首先介绍了Java中进行高清图片压缩的基本方法,包括使用Java标准库ImageIO和第三方库ApacheCommonsCompress,通过示例代码展示了如何调整图像质量和使用第三方工具来压缩图片文件,感兴趣的朋友跟随小编一起看看吧
    2025-01-01
  • Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)

    Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?今天小编通过本教程给大家介绍下
    2016-12-12

最新评论