добавили Interceptor и проверяющие заголовки в методе prehandle()
интерфейса HandlerInterceptor, а затем с помощью интерфейса WebMvcConfigurer
добавили этот перехват, и в случае успеха мы передали управление базовому классу URL-контроллера. В противном случае он вернет false
и не перейдет в класс Controller.
То же самое, что мы можем достичь в Spring WebFlux? в WebFlux есть похожий интерфейс типа WebFluxConfigurer
, но здесь нет такого метода добавления перехватчика?
Также с помощью RouterFunction
в WebFlux мы можем маршрутизировать, но как мы можем проверять и проверять заголовки в общем разделе, как HandlerInterceptor
в Spring Mvc? **
Ниже приведен фрагмент кода Spring MVC:
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Autowired
CommonInterceptor CommonInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(CommonInterceptor).addPathPatterns("/api/v1/**");
}
@Component
public class CommonInterceptor implements HandlerInterceptor {
private static final Logger LOGGER = LoggerFactory.getLogger(CommonInterceptor.class);
@Autowired
private CommonRequest CommonRequest;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws CommonException {
String tenantContext = request.getHeader(CommonFrameworkConstants.TENANT_CONTEXT);
String authToken = request.getHeader(CommonFrameworkConstants.AUTHORIZATION);
LOGGER.trace("Handling Request for Tenant Context {}", tenantContext);
CommonHeader CommonHeader = new CommonHeader(authToken, tenantContext);
CommonRequest.setCommonHeader(commonHeader);
CommonRequest.setUserName("api");
return true;
}
}