Я ожидаю, что исключения, созданные внутри методов контроллера, будут преобразованы в внутреннюю ошибку сервера 500, но я получаю исключение метод 405 не разрешен на стороне клиента, независимо от того, какие исключения возникают внутри метод контроллера.
ПРИМЕЧАНИЕ:
В сопоставлении запросов нет ничего плохого, поскольку при отладке он переходит к ожидаемому методу. Но когда исключение выбрасывается из методов контроллера, я получаю метод 405, запрещенный в моем клиенте.
ЗАМЕТКА 2:
Я пробовал перехватывать исключения и выдавать HttpServerErrorException
с соответствующим кодом ошибки и сообщением, но ничего не изменилось!
РЕДАКТИРОВАТЬ:
Я использую Spring Security, и вот конфигурация:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled=true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
/*
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}
*/
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/session/**").permitAll()
.antMatchers("/app/**").permitAll()
.antMatchers("/lib/**").permitAll()
.antMatchers("/templates/**").permitAll()
.antMatchers("/dial/**").permitAll()
.antMatchers("/names/**").permitAll()
// .antMatchers("/workflows/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/#/login").permitAll();
http.csrf().disable();
http.exceptionHandling().defaultAuthenticationEntryPointFor(
new UnauthorizedLoginUrlAuthenticationEntryPoint("/login.html"),
new ELRequestMatcher("hasHeader('X-Requested-With','XMLHttpRequest')"));
/* .logout()
.permitAll();*/
}
}