0
스프링 부트 응용 프로그램에서 내 응용 프로그램의 외부 파일을 호스팅하고 있습니다. addResourceHandler() 메소드에 의해 그렇게했다.스프링 부트 : 정적으로 호스팅 된 리소스 파일에 대한 요청을 가로 채기
또한 세션 속성 몇 개를 확인하여 이러한 파일에 대한 액세스를 확인해야합니다. 이를 위해 인터셉터를 추가했습니다.
문제는 : 프록시 라우터 아파치 설정을 통해 리눅스에 배포 할 때 차단하지만, 인터셉터의 preHandle에서 HttpServletRequest의 모든 세션 정보 (NO 세션)가 없습니다. 그러나, 내 IDE에서 직접 창을 실행할 때, HttpServletRequest는 올바른 세션을 가지고 있습니다.
아래는@Configuration
@AutoConfigureAfter(DispatcherServletAutoConfiguration.class)
public class ULCMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
@Autowired
private ThumbnailViewRequestInterceptor thumbnailViewRequestInterceptor;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/content/thumbnails/**").addResourceLocations("file:/app/content/files/).setCachePeriod(60*60*24);
}
@Bean
public MappedInterceptor createThumbnailInterceptor() {
return new MappedInterceptor("/content/thumbnails/**", "/content/thumbnails/public/**", thumbnailViewRequestInterceptor);
}
}
@Component
public class ThumbnailViewRequestInterceptor extends HandlerInterceptorAdapter {
@Autowired
private UserService userService;
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception arg3) throws Exception {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView model) throws Exception {
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
final boolean allowAccess = someOperationOnRequestObject(request.getSession(false), request.getRequestURL());
return allowAccess;
}
}
내 아파치 conf의 설정됩니다 :
<VirtualHost *:80>
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy "balancer://cluster">
BalancerMember http://10.76.2.72:8081/ keepalive=on retry=20 route=1
BalancerMember http://10.76.2.72:8082/ keepalive=on retry=20 route=2
ProxySet stickysession=ROUTEID
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
</Location>
ProxyPass /balancer-manager !
ProxyPass/"balancer://cluster/" maxattempts=6 timeout=60
ProxyPassReverse/"balancer://cluster"
</VirtualHost>
모든 헤더 무엇에 내가 놓치고 아래
코드인가?