У меня есть приложение Spring Boot, с безопасностью.И я удалил аутентификацию для этого URL-адреса "/ login".
Моя конфигурация безопасности
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
private final JwtFilter jwtFilter;
@Autowired
public SecurityConfiguration(JwtFilter jwtFilter) {
this.jwtFilter = jwtFilter;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.anonymous().and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
.authorizeRequests()
.anyRequest().authenticated().and()
.apply(new JwtConfigurerAdapter(jwtFilter)).and()
.exceptionHandling().authenticationEntryPoint(new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED));
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/v2/api-docs");
web.ignoring().antMatchers("/login");
}
}
Исключение My NotFound
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class NotFound extends RuntimeException {
public NotFound(String message) {
super(message);
}
}
Мой контроллер покоя с URL-адресом входаи исключение возвращаемое значение
@RestController
public class LoginController implements LoginService {
@Override
@GetMapping(value = "/login", produces = MediaType.APPLICATION_JSON_VALUE)
public UserInfo loginUsingJson(String username, String password) {
return findUser(username, password)).orElseThrow(() -> new NotFound("There does not exist any user by those credentials"));
}
}
Хорошо, вот моя проблема.Когда я вызываю GET для «/ login» и UserInfo существует, он возвращает пользователя в формате JSON.Это работает из-за web.ignoring().antMatchers("/login");
, но если пользователь не существует, исключение NotFound с http-кодом ошибки 404 не будет отображаться.Теперь он возвращает код ошибки 401 Not Authorized.
Я предполагаю, что это связано с HttpSecurity, где я должен добавить какое-то исключение или что-то еще, чтобы можно было вернуть код исключения.Но где я могу позволить игнорировать обработку исключений при авторизации HttpSecurity?