配置 Web 拦截器
@Component
@Slf4j
public class AuthInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
{
return true;
}
}
@Configuration
@Slf4j
public class WebConfig implements WebMvcConfigurer {
@Autowired
private AuthInterceptor authInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(authInterceptor)
.addPathPatterns("/**/*.html");
}
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.addAllowedOriginPattern("*"); // 允许所有来源
config.addAllowedHeader("*"); // 允许所有头部
config.addAllowedMethod("*"); // 允许所有方法
config.setAllowCredentials(true);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}
配置 Rest 拦截器
@Configuration
@ApplicationPath("/rest")
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
// 设置要扫描的包路径,Jersey 会自动扫描该包及其子包下的资源类和提供器
packages("com.rongstone.stock.pool.controller");
register(RestRequestFilter.class);
register(RestResponseFilter.class);
}
}
@Provider
@Slf4j
public class RestRequestFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) {
UriInfo uriInfo = requestContext.getUriInfo();
log.info("RestFilterUrl:{}",uriInfo.getAbsolutePath());
}
}
@Provider
@Slf4j
public class RestResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext,
ContainerResponseContext responseContext) {
responseContext.getHeaders().add("Access-Control-Allow-Origin", "*");
responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
responseContext.getHeaders().add("Access-Control-Allow-Headers", "Content-Type, Authorization");
}
}