package com.securityControl.gateway.config; import com.securityControl.common.core.utils.aes.StringHelper; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.web.ServerProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.http.HttpStatus; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.web.server.ResponseStatusException; import org.springframework.web.server.WebFilter; @Configuration public class ContextPathConfig { @Bean @ConditionalOnProperty("server.servlet.context-path") @Order(Ordered.HIGHEST_PRECEDENCE) public WebFilter contextPathWebFilter(ServerProperties serverProperties){ String contextPath = serverProperties.getServlet().getContextPath(); return (serverWebExchange, webFilterChain) ->{ ServerHttpRequest request = serverWebExchange.getRequest(); String requestPath = request.getURI().getPath(); if(requestPath.contains(contextPath)){ String newPath = requestPath.replaceFirst(contextPath+"/", ""); ServerHttpRequest newRequest = request.mutate() .path(newPath).build(); return webFilterChain.filter(serverWebExchange.mutate() .request(newRequest) .build() ); }else { throw new ResponseStatusException(HttpStatus.NOT_FOUND); } }; } }