1
resposta

[Dúvida] O erro 403 persiste.

1 resposta

Bom dia, Isabelle! Tudo bem?

Testando o seu código o erro 403 não foi retornado como você disse no título desse tópico.

Para um teste mais direto criei uma rota para fazer o cadastro de um usuário e deixar o código como responsável por fazer a criptografia da senha, caso queira fazer isso também basta seguir os seguintes passos:

  1. Criar um DTO para ser usado na rota. Crie um arquivo chamada DadosCriacaoUsuario dentro da pasta "usuario" que está em "domain", esse DTO será um record que terá as informações usadas para criar um usuário:

    package med.voll.api.domain.usuario;
    
    public record DadosCriacaoUsuario (String login, String senha) {}
    
  2. Crie um controller para usuários com o nome "UsuarioController" e crie a rota que usa o DTO que criamos anteriormente para coletar as informações no corpo da requisição e criptografe a senha:

    
    package med.voll.api.controller;
    
    import med.voll.api.domain.usuario.DadosCriacaoUsuario;
    import med.voll.api.domain.usuario.Usuario;
    import med.voll.api.domain.usuario.UsuarioRepository;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.http.ResponseEntity;
    import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
    import org.springframework.security.crypto.password.PasswordEncoder;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @RequestMapping("/create")
    public class UsuarioController {
    
        @Autowired
        private UsuarioRepository usuarioRepository;
    
        @PostMapping
        public ResponseEntity<Usuario> cadastrarUsuario(@RequestBody DadosCriacaoUsuario dadosCriacaoUsuario) {
            PasswordEncoder encoder = new BCryptPasswordEncoder();
            var passwordEncode =  encoder.encode(dadosCriacaoUsuario.senha());
            Usuario usuario = new Usuario(dadosCriacaoUsuario.login(), passwordEncode);
    
            usuarioRepository.save(usuario);
            return ResponseEntity.ok(usuario);
        }
    }
    
  3. Por fim, no arquivo SecurityConfigurations adicione a rota de criação para ser permitida sem a necessidade de autenticação:

    .antMatchers(HttpMethod.POST, "/login", "/create").permitAll()
    

Enfim, esses passos são apenas para criar a rota que fiz para validar que o seu código estava funcionando ou não, então, usando essa rota, mas a de login e outra, passando o token criado em login, verifiquei que sim, o filtro está funcionando e a coleta de token também.

GIF que mostra a verificação de a coleta do token retornada no login é feita corretamente, sem gerar o error 403

Porém, caso realizando esses passos o seu código torne a dar o erro 403, peço que atualize as informações do seu projeto no Google Driver que compartilhou, pois para ele apresentar algum problema ele deve estar diferente do que você compartilhou.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.