Skip to content

  • Home
  • Blog
  • Projetos
  • Contato


Todo dev tem ou já teve total pavor dessa palavra cors, aquele que nasceu para nos ajudar mas acaba dificultando o nosso trabalho,  por pura falta de entendimento de como é o seu pleno funcionamento, que convenhamos, é bem simples, né?

Mas a nossa missão hoje não é explicar como funcionar o CORS, mas sim resolvermos um problema bem comum que pode acontece quando estamos utilizando o Spring Security e uma aplicação em Angular (aliás, qualquer outra que use HTTP)

Essa simples mistura de Angular rodando por padrão localmente em seu ambiente de desenvolvimento na porta 4200, e o seu backend com Spring Boot, provavelmente em paralelo rodando na porta 8080 já podem acarretar um problema de cors.

Configurando o Spring:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("http://localhost:4200").allowedMethods("PUT", "DELETE",
                        "GET", "POST").allowedHeaders("*");
    }


}

Devemos criar uma classe de configuração, no exemplo eu criei uma chamada WebConfig, ela deverá implementar a interface WebMvcConfigurer e em seguida devemos gerar a implementação do método addCorsMapping que recebe como parâmetro o CorsRegistry, objeto passado por referência que é responsável pelo registro dos headers que possibilitam a comunicação entre as duas partes.

  • AddMapping: Adicionamos o pattern das url’s da API, no caso tudo “/**“
  • allowedOrigins: colocamos a origem permitida, no nosso caso http://localhost:4200 (origem do Angular em dev)
  • allowedMethod: métodos permitidos nas requisições

Configuração com Spring Security:

Quando estamos utilizando Spring Security devemos ter uma abordagem um pouco diferente, devemos aplicar o cors na configuração dos nosso endpoints seguros, como no exemplo abaixo:

@Throws(Exception::class)
 override fun configure(http: HttpSecurity) {
     http.authorizeRequests()
         .anyRequest()
         .authenticated().and().csrf()
         .disable().cors().and()
         .sessionManagement()
         .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
         .and().addFilterBefore(AuthenticationFilter(tokenService), UsernamePasswordAuthenticationFilter::class.java)
 }

Observamos que apos aplicarmos o csrf devemos desabilitar o cors, essa abordagem é bem simples, porém pode causar muita dor de cabeça caso você esqueça de configurar.

Considerações finais:

Desenvolver uma integração nem sempre pode ser uma tarefa fácil, mas com essas dicas acredito que irei poupar um bom tempo perdido nas suas integrações de API’s.

Até mais.

Post Views: 97

CORS em uma aplicação Angular 10 e Spring Security

novembro 19, 2021
ANGULAR 5, Cors, Spring, Spring Security

Post navigation

Previous Post:

Como gerar um certificado SSL grátis para sua aplicação em Spring

Next Post:

Como explorar seu novo componente no Arduino

Posts recentes

  • Como explorar seu novo componente no Arduino
  • CORS em uma aplicação Angular 10 e Spring Security
  • Como gerar um certificado SSL grátis para sua aplicação em Spring
  • Arduino vs Dinossauro do Google Chrome
  • Comprei uma impressora 3D

Arquivos

  • abril 2022
  • novembro 2021
  • dezembro 2020
  • junho 2020
  • maio 2020
  • março 2020
  • dezembro 2019
  • novembro 2019
  • agosto 2019
  • junho 2019
  • março 2019
  • novembro 2018
  • agosto 2018
  • julho 2018
  • março 2018
  • fevereiro 2018
  • janeiro 2018
  • dezembro 2017
  • novembro 2017
  • outubro 2017
  • agosto 2017
  • abril 2017
  • novembro 2016
  • junho 2015
  • fevereiro 2015
  • janeiro 2015
  • novembro 2014
  • setembro 2014
  • agosto 2014
  • julho 2014
  • junho 2014
  • maio 2014
  • abril 2014
  • março 2014
  • fevereiro 2014
  • janeiro 2014
  • dezembro 2013
  • novembro 2013
  • outubro 2013

Categorias

  • 3D printter
  • ALREADY
  • Ame Digital
  • ANGULAR 4+ ROLE BASED
  • ANGULAR 5
  • ANGULAR ROLE BASED
  • Arduino
  • Consulta Operadora
  • Cors
  • Crawler
  • Data Science
  • DIRECTIVE ANGULAR
  • español
  • HTTPS
  • Impressora 3D
  • iOS
  • iOT
  • JAVA
  • JERSEY
  • Jsoup
  • Meetup
  • Pandas
  • Python
  • R
  • REQUEST JERSEY
  • scraping
  • SECURITY CONTEXT
  • Sem categoria
  • Spanish
  • Spring
  • Spring Security
  • Spring Webflux
  • Swift
  • Talkings
  • Technology
  • Uncategorized
  • Webflux
2021 - Jhonatan S. Souza