Я использую базовое разрешение с помощью Spring Security. Я настраиваю последнюю через конфигурацию Java.Отправьте код ошибки http 401 вместо страницы входа по умолчанию, весенняя безопасность
Я бы хотел отправить клиенту код ошибки HTTP 401 с сообщением «Недействительный логин и пароль», если они недействительны. Однако в настоящее время Spring Security просто показывает мне всплывающее окно по умолчанию.
Вот моя конфигурация Spring безопасности:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests().anyRequest().authenticated().and()
.httpBasic()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/pages/index.html");
http.exceptionHandling().authenticationEntryPoint(new AjaxAuthorizationPoint());
}
Насколько я понял, я должен добавить обычай authentificationEntryPoint
обрабатывать случай недействительных полномочий, то есть я должен послать туда код 401 ошибок с сообщение об ошибке
Вот код для этого. Для простоты тело метода довольно просто.
public class AjaxAuthorizationPoint extends BasicAuthenticationEntryPoint{
@Override
public void commence(final HttpServletRequest request,
final HttpServletResponse response,
final AuthenticationException authException) throws IOException {
System.out.println("blah");
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized");
}
}
Однако метод public void commence()
не вспылить, когда я ввожу неверный логин и пароль и Spring просто посылает мне всплывающее окно входа в систему по умолчанию.
Как я могу переопределить стратегию по умолчанию? Как настроить безопасность Spring для отправки кода ошибки HTTP 401 вместо отображения страницы входа по умолчанию?
response.setStatus (HttpServletResponse.SC_UNAUTHORIZED); –