Авторизация Angular Spring Security с jwt. Как решить проблему CORS?

я делаю авторизацию с дальнейшим функционалом, Angular, Spring Secuirity с помощью jwt. Когда тестирую backend в Postman то все работает без проблем. Когда пробую сделать все тоже самое с клиента на Angular получаю следующую ошибку: введите сюда описание изображения

Как решить эту проблему? Вот что я делаю на клиенте, для дальнейшего использования jwt:

export class BasicAuthHttpInterceptorServiceService implements HttpInterceptor{

constructor() { } intercept(req: HttpRequest, next: HttpHandler) {

if (localStorage.getItem('username') && localStorage.getItem('token')) {
  req = req.clone({
    setHeaders: {
      Authorization: localStorage.getItem('token')
    }
  });
}

return next.handle(req);
}}

Функция отправки запроса

auth(username, password){
return this.http.post<any>('http://localhost:8080/login', {username, password}).pipe(
  map(
    userData => {
      localStorage.setItem('username', username);
      const token = userData.token;
      localStorage.setItem('token', token);
      const role = userData.role;
      localStorage.setItem('role', role);
      console.log(token);
      return userData;
    }
  )
);

}

и настройка SecurityConfig

@Configuration
@EnableWebSecurity
public class SecurityConfig  extends WebSecurityConfigurerAdapter {
@Autowired
private JwtFilter jwtFilter;
@Override




protected void configure(HttpSecurity http) throws Exception {
    http
            .httpBasic().disable()
            .csrf().disable()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
            .authorizeRequests()
            .antMatchers("/orders").hasRole("ADMIN")
            .antMatchers("/product").hasRole("USER")
            .antMatchers("/register", "/login").permitAll()
            .and()
            .addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class);
}

@Bean
public PasswordEncoder passwordEncoder(){
    return new BCryptPasswordEncoder();
}

}

Обработка запроса

@RestController
@CrossOrigin(origins = "http://localhost:4200")

public class AuthController {

@Autowired
private UserService userService;

@Autowired
private JwtProvider jwtProvider;
@PostMapping("/register")
public String registerUser(@RequestBody @Validated RegistrationRequest registrationRequest) {
    User u = new User();
    u.setPassword(registrationRequest.getPassword());
    u.setUsername(registrationRequest.getUsername());
    userService.saveUser(u);
    return "OK";
}
@PostMapping("/login")
public AuthResponse auth(@RequestBody AuthRequest authRequest){
    User user = userService.findByUsernameAndPassword(authRequest.getUsername(),authRequest.getPassword());
    String role = userService.findByUsername(authRequest.getUsername()).getRole().getName();
    String token = jwtProvider.generateToken(user.getUsername());
    return new AuthResponse(token,role);
}

}


Ответы (0 шт):