Я установил папку ресурсов вне classpath, которая не требует аутентификации для доступа к файлам для загрузки. Это прекрасно работает, за исключением случаев, когда ресурсы отсутствуют. Вместо того, чтобы возвращать сообщение об ошибке, на которое я могу отреагировать, я получаю страницу входа.
Я установил обработчик ресурса следующим образом:
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").
addResourceLocations("/", "/resources/", "file:/updater/");
}
В реализации WebSecurityConfigurerAdapter, которую я имею,
@Override
public void configure(final WebSecurity web) {
web.ignoring().antMatchers("/resources/**");
}
и
@Override
protected void configure(final HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/resources/**")
.permitAll()
[snip]
упрощены для этого примера.
У меня есть реализация ResponseEntityExceptionHandler, которая также имеет исключение перехвата всех
@ExceptionHandler({ Exception.class })
а также другие пользовательские исключения, но это никогда не генерируется.
Я не использую контроллер для загрузки, я использую класс java URLConnection и хочу вернуть код ошибки, если есть проблема. Например, когда я удаляю файлы, и кто-то просто пытается загрузить из этой папки, и она пуста.
Так как это перенаправление происходит, я получаю 200, как и следовало ожидать, так как страница входа действительно загружается.
Я прочитал все темы, которые я могу найти по поводу остановки перенаправлений, но это не для меня.
Как разрешить поведение перенаправления по умолчанию для входа в систему для всего, кроме "этой указанной c папки" Updater ", которая находится за пределами пути к классам.