簡體   English   中英

Spring 引導 - 攔截器:僅在 GET 請求中排除路徑

[英]Spring Boot - Interceptor: Exclude path only in GET request

我正在研究 Java Spring 項目,我們為安全編寫了一個攔截器。 這個 class 實現了 WebMvcConfigurer,我們重寫了addInterceptors方法:

@Override
public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new SecurityInterceptor(aService, sService))
                .excludePathPatterns("/", "/ping", "/resc")
        }

這很好用。 現在,路徑“/resc”有一個 GET 請求,也有一個 POST 請求。 關鍵是 POST 請求必須被攔截,而不是 GET 請求到同一路徑。

有沒有辦法做到這一點? 謝謝

InterceptorRegistration沒有為您的目的提供任何方法。 但我認為有一種方法可以實現你的行為。 您可以自動裝配 ApplicationContext。 而不是在您的攔截器中執行此操作:

try {
  RequestMappingHandlerMapping req2HandlerMapping = (RequestMappingHandlerMapping)applicationContext.getBean("requestMappingHandlerMapping");
  HandlerExecutionChain handlerExeChain = req2HandlerMapping.getHandler(request);
  if (Objects.nonNull(handlerExeChain)) {
     Method method = ((HandlerMethod) handlerExeChain.getHandler()).getMethod();
     if (!method.isAnnotationPresent(GetMapping.class)) {
       //Provide your Security Checks here.
     }
} catch (Exception e) {
  //provide some Error Code
}

如果您還想檢查特定路徑。 例如你的“/resc”你可以用一個額外的if來檢查它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM