您好,登錄后才能下訂單哦!
本篇內容主要講解“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 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() ; } }
到此,相信大家對“Swagger2不被SpringSecurity框架攔截的配置方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。