#spring-boot #http #spring-security #postman
#spring-boot #http #spring-security #postman
Вопрос:
СЦЕНАРИЙ: Я реализовал базовую аутентификацию с помощью spring security. Я сгенерировал форму входа и базовую аутентификацию http. Поэтому, когда я хочу отправить новые данные, которые представляют собой файл JSON в моем Requestbody, я работаю только с Put и GEt, но не с Post.
ОШИБКА: Когда я использую метод Post (я тестирую с postman), имя пользователя в my loadUserByUsername(String username)
всегда пустое. Когда я выполняю тот же вызов с помощью Get или Put, имя пользователя является таким, каким оно должно быть.
Код:
Я не совсем уверен, какие части кода могут быть полезны, потому что все, кажется, происходит за кулисами. Поэтому я надеюсь, что SpringSecurityConfic может помочь
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests().antMatchers("/**").permitAll().anyRequest().authenticated().and().httpBasic().authenticationEntryPoint(entryPoint);
http.addFilterAt(new CustomBasicAuthenticationFilter(authenticationManagerBean()), BasicAuthenticationFilter.class);
http.formLogin().loginPage("/login").permitAll().failureUrl("/login").successHandler(new RoleBasedAuthenticationSuccessHandler());
http.logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessUrl("/login").invalidateHttpSession(true).deleteCookies("JSESSIONID").permitAll();
}
В моем файле SpringSecurotyConfiguration у меня есть http.csrf().disable(), но он все еще не работает.
есть все, о чем я должен позаботиться, когда я хочу использовать POST.
Комментарии:
1. Можете ли вы предоставить соответствующий код?
2. Что такое
CustomBasicAuthenticationFilter
? Почему бы не использовать фильтр по умолчанию для базовой аутентификации? Тем не менее, покажите свой запрос с заголовками. Отправляете ли выAuthentication
заголовок с именем пользователя и паролем в кодировке BASE64?3. Да, я добавляю параметры аутентификации в заголовок при использовании Post. CustomBasicAuthenticationFilter — это фильтр, который я вставил, чтобы отличать вход с мобильного устройства от входа через браузер. Это отлично работает с Get и put. Так что я не думаю, что это должно быть проблемой.