Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Sistema não barra Role

Estou com duas ROLES(ADMIN e USER) e um usuário para cada ROLE. Coloquei o endpoint POST /virtual-shop/products apenas para a ROLE ADMIN, porém quando faço a request via postman. o sistema permite que usuários que não tenham a ROLE também criem produtos.

Estou usando Basic e implementei o UserDatailsService

  /**
   * Authorization configure
   *
   * @param http
   * @throws Exception
   */
  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http.csrf().disable().authorizeRequests()
        .antMatchers(HttpMethod.POST, "/virtual-shop/products").hasRole("ADMIN")
        .antMatchers(HttpMethod.DELETE, "/virtual-shop/products").hasRole("ADMIN")
        .antMatchers("/virtual-shop/**").authenticated()
        .antMatchers(HttpMethod.POST, "/virtual-shop/users").permitAll()
        .antMatchers(HttpMethod.GET, "/virtual-shop/products").permitAll()
        .antMatchers(HttpMethod.GET, "/virtual-shop/products/*").permitAll()
        .anyRequest().authenticated()
        .and().httpBasic();
  }
1 resposta
solução!

Consegui... estava colocando o caminho todo, incluindo o context. Ai quando removi funcionou. Ficou assim:

    http.csrf().disable().authorizeRequests()
        .antMatchers(HttpMethod.POST, "/products").hasRole("ADMIN")
        .antMatchers(HttpMethod.DELETE, "/products/*").hasRole("ADMIN")
        .antMatchers(HttpMethod.POST, "/users").permitAll()
        .antMatchers(HttpMethod.GET, "/products").permitAll()
        .antMatchers(HttpMethod.GET, "/products/*").permitAll()
        .anyRequest().authenticated()
        .and().httpBasic();

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software