欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot中如何指定某些接口不被攔截

 更新時(shí)間:2024年11月17日 15:14:23   作者:程序修理員  
這篇文章主要為大家詳細(xì)介紹了springboot中如何指定某些接口不被攔截,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

1、監(jiān)聽器(Interceptor)攔截處理

在 Spring Boot應(yīng)用中,如果你希望某些請求地址不被監(jiān)聽器(Interceptor)攔截處理,可以通過配置攔截器的路徑來實(shí)現(xiàn)。攔截器通常用于在請求前后進(jìn)行處理,比如權(quán)限驗(yàn)證、日志記錄等,但有時(shí)候你可能希望某些請求可以跳過這些處理。

以下是實(shí)現(xiàn)這一目標(biāo)的一般步驟:

1)定義攔截器:

@Component
public class MyInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 在此處編寫你的攔截邏輯
        // 返回 true 表示繼續(xù)處理請求,返回 false 表示結(jié)束請求
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        // 在請求處理之后進(jìn)行處理
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        // 在請求完成之后進(jìn)行處理
    }
}

2)配置攔截器:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Autowired
    private MyInterceptor myInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(myInterceptor)
                .addPathPatterns("/**") // 攔截所有路徑
                .excludePathPatterns("/public/**"); // 跳過 /public 下的路徑
    }
}

addPathPatterns("/**") 表示攔截所有路徑,而 excludePathPatterns("/public/**")

表示跳過以 /public/ 開頭的路徑,即不對這些路徑應(yīng)用攔截器邏輯。

2、繞過Spring Security 認(rèn)證處理

在 Spring Security 中,AuthenticationEntryPoint 主要用于處理未經(jīng)認(rèn)證的請求,例如需要登錄但用戶未提供憑證時(shí)的處理邏輯。如果你希望某些接口請求不經(jīng)過 AuthenticationEntryPoint 的認(rèn)證處理,通常可以通過配置 Spring Security 的 HttpSecurity 來實(shí)現(xiàn)。

1)配置類中定義 HTTP Security:

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/public/**").permitAll() // 允許訪問的接口路徑
                .anyRequest().authenticated() // 其他接口路徑需要認(rèn)證
            .and()
            .httpBasic()
                .authenticationEntryPoint(new MyAuthenticationEntryPoint()); // 設(shè)置自定義的認(rèn)證入口點(diǎn)
    }
}

說明:

antMatchers("/public/**").permitAll() 指定了 /public/** 路徑下的接口不需要認(rèn)證,可以直接訪問。

.anyRequest().authenticated() 告訴 Spring Security 其他所有請求都需要認(rèn)證。

.httpBasic().authenticationEntryPoint(new MyAuthenticationEntryPoint()) 指定了自定義的 AuthenticationEntryPoint,你可以根據(jù)需要進(jìn)行自定義邏輯,例如返回特定的錯(cuò)誤信息或跳轉(zhuǎn)頁面。

2)自定義 AuthenticationEntryPoint:

/**
 * 認(rèn)證失敗處理類 返回未授權(quán)
 *
 * @author dongxiajun
 */
@Component
public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint, Serializable {
    private static final long serialVersionUID = -8970718410437077606L;

    @Override
    public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) {
        String msg = StringUtils.format("請求訪問:{},認(rèn)證失敗,無法訪問系統(tǒng)資源", request.getRequestURI());
        ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.error(401, msg)));
    }
}

到此這篇關(guān)于springboot中如何指定某些接口不被攔截的文章就介紹到這了,更多相關(guān)springboot指定接口不被攔截內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot3集成WebSocket的全過程

    SpringBoot3集成WebSocket的全過程

    WebSocket通過一個(gè)TCP連接在客戶端和服務(wù)器之間建立一個(gè)全雙工、雙向的通信通道,使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡單,本文給大家介紹了SpringBoot3集成WebSocket的全過程,并有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-05-05
  • MyBatis?在使用上的注意事項(xiàng)及其辨析(最新最全整理)

    MyBatis?在使用上的注意事項(xiàng)及其辨析(最新最全整理)

    這篇文章主要介紹了MyBatis的在使用上的注意事項(xiàng)及其辨析,本文內(nèi)容比較長,是小編用心給大家整理的,圖文實(shí)例代碼相結(jié)合給大家講解的非常詳細(xì),需要的朋友參考下吧
    2024-06-06
  • 解決springboot生成bean名稱沖突(AnnotationBeanNameGenerator)

    解決springboot生成bean名稱沖突(AnnotationBeanNameGenerator)

    這篇文章主要介紹了解決springboot生成bean名稱沖突(AnnotationBeanNameGenerator),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • MapStruct Plus的使用教程

    MapStruct Plus的使用教程

    MapStruct和MapStructPlus是Java類型映射的工具,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • JHipster如何修改JDL中的entity

    JHipster如何修改JDL中的entity

    這篇文章主要介紹了JHipster如何修改JDL中的entity問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • java代碼審計(jì)之目錄遍歷的解決

    java代碼審計(jì)之目錄遍歷的解決

    目錄穿越漏洞,也叫做目錄遍歷/路徑遍歷漏洞,本文主要介紹了java代碼審計(jì)之目錄遍歷的解決,文中通過案例介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Java實(shí)戰(zhàn)之利用POI生成Excel圖表

    Java實(shí)戰(zhàn)之利用POI生成Excel圖表

    Apache POI是Java生態(tài)中處理Office文檔的核心工具,這篇文章主要為大家詳細(xì)介紹了如何在Excel中創(chuàng)建折線圖,柱狀圖,餅圖等常見圖表,需要的可以參考下
    2025-02-02
  • 使用java將動(dòng)態(tài)網(wǎng)頁生成靜態(tài)網(wǎng)頁示例

    使用java將動(dòng)態(tài)網(wǎng)頁生成靜態(tài)網(wǎng)頁示例

    這篇文章主要介紹了使用java將動(dòng)態(tài)網(wǎng)頁生成靜態(tài)網(wǎng)頁示例,需要的朋友可以參考下
    2014-03-03
  • Java中判斷集合是否相等的幾種方法詳解

    Java中判斷集合是否相等的幾種方法詳解

    這篇文章主要介紹了Java中判斷集合是否相等的幾種方法詳解,在平時(shí)的開發(fā)中,可能會(huì)遇到需要判斷兩個(gè)集合是否相等的需求,那么本文就來詳細(xì)講解一下幾種實(shí)現(xiàn)方法,需要的朋友可以參考下
    2023-08-08
  • Java反射技術(shù)詳解及實(shí)例解析

    Java反射技術(shù)詳解及實(shí)例解析

    這篇文章主要介紹了Java反射技術(shù)詳解及實(shí)例解析,反射可以說是Java中最強(qiáng)大的技術(shù)了,它可以做的事情太多太多,很多優(yōu)秀的開源框架都是通過反射完成的。如果對JAVA感興趣來可以學(xué)習(xí)一下
    2020-07-07

最新評論