Swagger2不被SpringSecurity框架攔截的配置及說明
Swagger2不被SpringSecurity框架攔截的配置
打算在SpringSecurity框架中集成Swagger2框架進(jìn)行接口功能的運(yùn)行及測試,發(fā)現(xiàn)Swagger2會(huì)被SpringSecurity框架攔截,導(dǎo)致我們在瀏覽器中訪問不了Swagger2首頁。
解決這個(gè)問題的主要方法只需要在SpringSecurity的配置類中添加一個(gè)方法即可,博主的SpringSecurity的配置類定義為SecurityConfig,添加以下代碼重啟項(xiàng)目再訪問即可;
/*
* 解決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", // 用來獲取支持的動(dòng)作
"/swagger-resources", // 用來獲取api-docs的URI
"/swagger-resources/configuration/security", // 安全選項(xiàng)
"/swagger-resources/**",
//補(bǔ)充路徑,近期在搭建swagger接口文檔時(shí),通過瀏覽器控制臺(tái)發(fā)現(xiàn)該/webjars路徑下的文件被攔截,故加上此過濾條件即可。(2020-10-23)
"/webjars/**"
);
}
Spring security5 集成swagger2無法訪問
主要還是spring security把 swagger需要訪問的URL被攔截,不只是swagger-ui.html這個(gè)URL
查找網(wǎng)上的解決方案沒一個(gè)好用的,然后自己在跳轉(zhuǎn)重定向的方法里打印了引發(fā)跳轉(zhuǎn)的URL,一個(gè)一個(gè)試出來的老鐵。累啊~
話不多說,放圖,配置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提供簡潔的方式來創(chuàng)建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();
}
/*配置安全項(xiàng)*/
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin()
.loginPage("/needLogin")
.loginProcessingUrl("/login").permitAll()
.successHandler(successHandler)
.failureHandler(failureHandler)
.and()
.authorizeRequests()
// 授權(quán)不需要登錄權(quán)限的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()
;
}
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringSecurity自定義資源攔截規(guī)則及登錄界面跳轉(zhuǎn)問題
- SpringSecurity攔截器鏈的使用詳解
- springsecurity實(shí)現(xiàn)攔截器的使用示例
- SpringBoot整合SpringSecurity實(shí)現(xiàn)認(rèn)證攔截的教程
- Spring Boot security 默認(rèn)攔截靜態(tài)資源的解決方法
- SpringSecurity實(shí)現(xiàn)動(dòng)態(tài)url攔截(基于rbac模型)
- Spring Security攔截器引起Java CORS跨域失敗的問題及解決
- SpringBoot+SpringSecurity 不攔截靜態(tài)資源的實(shí)現(xiàn)
- 淺談Spring Security 對于靜態(tài)資源的攔截與放行
- spring Security配置攔截規(guī)則小結(jié)
相關(guān)文章
Java?EE實(shí)現(xiàn)用戶后臺(tái)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java?EE實(shí)現(xiàn)用戶后臺(tái)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
springMVC配置環(huán)境實(shí)現(xiàn)文件上傳和下載
這篇文章主要為大家詳細(xì)介紹了springMVC配置環(huán)境實(shí)現(xiàn)文件上傳和下載的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05
java應(yīng)用開發(fā)之Mybatis通過Mapper代理自定義接口的實(shí)現(xiàn)
這篇文章主要介紹了java應(yīng)用開發(fā)之Mybatis通過Mapper代理自定義接口的實(shí)現(xiàn)方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09
Java數(shù)據(jù)結(jié)構(gòu)與算法之單鏈表深入理解
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)與算法之單鏈表深入理解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
Java中實(shí)現(xiàn)高清圖片壓縮的兩種方案(最新推薦)
文章首先介紹了Java中進(jìn)行高清圖片壓縮的基本方法,包括使用Java標(biāo)準(zhǔn)庫ImageIO和第三方庫ApacheCommonsCompress,通過示例代碼展示了如何調(diào)整圖像質(zhì)量和使用第三方工具來壓縮圖片文件,感興趣的朋友跟隨小編一起看看吧2025-01-01
Java使用JDBC向MySQL數(shù)據(jù)庫批次插入10W條數(shù)據(jù)(測試效率)
使用JDBC連接MySQL數(shù)據(jù)庫進(jìn)行數(shù)據(jù)插入的時(shí)候,特別是大批量數(shù)據(jù)連續(xù)插入(100000),如何提高效率呢?今天小編通過本教程給大家介紹下2016-12-12

