11
respostas

[Dúvida] Esta dando o erro 403 forbiden em qualquel tentativa de cadastro de medico, exibir medico

Esta dando o erro 403 forbiden em qualquer tentativa no insominia, nao estou nem conseguindo cadastrar o medico, ou exibir ele, e nao esta dando erro na compilação.

https://github.com/allanflm/med.voll

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

11 respostas

Oi!

Verifique na aba auth do Insomnia se você está enviando o token JWT corretamente.

Nao estou nem conseguindo gerar o token Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Olhei o seu código e não encontrei erros. Verifica no Insomnia se está sem enviar o token nesse requisição de login, pois nela não vai token:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Nao esta marcado, mas ainda nao esta funcionando

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Está tudo certo então. Talvez seja no banco de dados. Faz um select na tabela de usuarios e manda o print aqui

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

na verdade é para rodar: select * from usuarios

ops kkk Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Sua tabela está vazia. Precisa fazer o insert do usuário nela para poder fazer login na aplicação.

como eu faço mesmo? pq se eu fizer select * from medicos, pacientes , vai aparecer a mesma coisa

Oi Allan, Boa noite. Sou apenas um estudante aqui do curso, mas espero conseguir te ajudar...

Temos duas alternativas:

**1 - fazer o insert do usuário diretamente no seu banco de dados, rodando o comando: ** INSERT INTO usuarios (login, senha) VALUES ('nome_de_login', 'senha');

lembre-se de conferir se o nome da tabela e das colunas estão iguais as minhas. E outro ponto... a senha não pode ser passada como "123456" pois o /login está testando a senha com base no BCrypt, então dará erro. Será necessário inserir uma senha BCrypt manualmente.

pode usar o seguinte site para encontrar sua senha codificada: https://bcrypt-generator.com/

2- Criar uma rota em seu controller para criar o usuário:

a minha ficou da seguinte forma:

@PostMapping("/create")
public ResponseEntity criarLogin(@RequestBody @Valid DadosAutenticacao dados) {
    Usuario usuario = new Usuario();

    BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();

    usuario.setSenha(encoder.encode(dados.senha()));
    usuario.setLogin(dados.login());

    repository.save(usuario);

    return ResponseEntity.ok("Usuário "+ usuario.getLogin() + " criado com sucesso!");
}

apenas lembre-se de liberar a rota dentro do arquivo SecurityConfigurations.java:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    return http.csrf().disable()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and().authorizeHttpRequests()
            .requestMatchers(HttpMethod.POST, "/login").permitAll()
            .requestMatchers(HttpMethod.POST, "/login/create").permitAll()
            .requestMatchers("/v3/api-docs/**", "/swagger-ui.html","/swagger-ui/**").permitAll()
            .anyRequest().authenticated()
            .and().addFilterBefore(securityFilter, UsernamePasswordAuthenticationFilter.class)
            .build();
}

a minha liberação de rota está dessa forma, pois já estou na aula de documentação. Caso você não esteja, basta adaptar apenas incluindo a liberação da rota create logo após a sua rota login.

Espero ter ajudado!