Авторизация 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);
}
}