Я пытаюсь использовать базовую авторизацию Spring Security.Когда я делаю почтовый запрос от angular, Spring не может распознать свойства 'username' и 'password'.Когда я делаю почтовый запрос от почтальона, это работает.Я не знаю, связана ли проблема с конфигурацией пружины или угловым запросом.
Я пробовал много конфигураций почтового запроса, но ничего не работает.
Это моя конфигурация безопасности пружины:
@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("a").password("a").roles("*");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors().and().
csrf().disable()
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS,"/**").permitAll()
.antMatchers("/login").permitAll()
.antMatchers("/users").permitAll()
.anyRequest().authenticated()
.and().formLogin().and().httpBasic();
}
Мой актуальный угловой почтовый запрос:
constructor(private httpClient: HttpClient) {}
handleLogin(user: UserDto) {
let headers = new HttpHeaders({
'Authorization': 'Basic ' + btoa('a' + ':' + 'a'),
'X-Requested-With': 'XMLHttpRequest'
});
this.httpClient
.post("//localhost:8080/login" ,{}, {headers}).subscribe(x=> {console.log(x)});
}
Это место, где учетные данные и результат проверки безопасности весной равны нулю
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
if (this.postOnly && !request.getMethod().equals("POST")) {
throw new AuthenticationServiceException("Authentication method not supported: " + request.getMethod());
} else {
String username = this.obtainUsername(request); //null
String password = this.obtainPassword(request); //null
Когда я делаю почтовый запрос от почтальонаАвторизация работает, я надеюсь, что кто-то может помочь мне с полученным результатом с помощью запроса anglar.
----------- РЕДАКТИРОВАТЬ ---------- Как предлагается в комментарии, япробовал эту и ту же проблему.
let options = { headers: headers };
this.httpClient
.post("//localhost:8080/login", {}, options).subscribe(x => { console.log(x) });
Спасибо