Segue o .zip do meu projeto atual: https://drive.google.com/file/d/1xsVhTfcQ35dxoR26U1WQvdJHTVcFUdUU/view?usp=sharing
Segue o .zip do meu projeto atual: https://drive.google.com/file/d/1xsVhTfcQ35dxoR26U1WQvdJHTVcFUdUU/view?usp=sharing
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:
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) {}
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);
}
}
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.
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!