Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

[Projeto] nao consigo autenticar usuario x2

Ola nao consigo efetivar o accesso a nenhum usuario por mais que tentei Insira aqui a descrição dessa imagem para ajudar na acessibilidade tentei de vairas maneiras Insira aqui a descrição dessa imagem para ajudar na acessibilidade

inclusive conferi se o codigo estaba bem.. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

no intellij esta tudo correndo normal Insira aqui a descrição dessa imagem para ajudar na acessibilidade

por favor me ayuden a corrigir esse problema e a entender..

8 respostas

Oi!

Manda aqui o código das suas classes: AutenticacaoController, AutenticacaoService e Usuario.

package med.Vol.api.controlador;

import jakarta.validation.Valid;
import med.Vol.api.dominio.usuarios.DatosAutenticacion;
import med.Vol.api.dominio.usuarios.Usuario;
import med.Vol.api.infra.seguridad.ServicioToken;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/login")
public class ControlAutenticacion {

    @Autowired
    private AuthenticationManager manager;

    @Autowired
    private ServicioToken servicioToken;

  @PostMapping
    public ResponseEntity efetuarLogin(@RequestBody @Valid DatosAutenticacion dados) {
        var token = new UsernamePasswordAuthenticationToken(dados.login(), dados.password());
        var authentication = manager.authenticate(token);

        return ResponseEntity.ok(servicioToken.generarToken((Usuario) authentication.getPrincipal()));
    }
}
package med.Vol.api.dominio.usuarios;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

@Service
public class ServicioAutenticacion implements UserDetailsService {
    @Autowired
private UsuarioRepositorio repositorio;
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        return repositorio.findByLogin(username);
    }
    @Bean
    public PasswordEncoder contrasenaEnCodigo(){
        return new BCryptPasswordEncoder();
    }
}
package med.Vol.api.dominio.usuarios;

import jakarta.persistence.*;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import med.Vol.api.dominio.direccion.Direccion;
import med.Vol.api.dominio.pacientes.DatosActualizaPacientes;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Collection;
import java.util.List;

@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(of = "id")
@Entity(name = "Usuario")
@Table(name = "usuarios")

public class Usuario implements UserDetails {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

   // @Column(name = "acceso")
    private String login;

   // @Column(name = "contrasena") 
    private String password;

    private boolean activo;
    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {   
        return List.of(new SimpleGrantedAuthority("ROLE_USER")); 
    }

    @Override
    public String getPassword() {
        return password;
    }

    @Override
    public String getUsername() {
        return login    ;
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return true;
    }

    public Usuario(DatosRegistroUsuarios datos) {

        this.login = datos.login();
        this.password = datos.password();
    }
    public void atualizarInformaciones(DatosActualizaUsuarios datos) {
        if (datos.login() != null) { // si el recurso nombre fuera actualiado se Renombrara
            this.login = datos.login();
        }
        if (datos.password() != null) {
            this.password = datos.password();
        }
}
    public void borrar() {
        this.activo = false;
    }
}

Obrigada por me atender

Está tudo certo. Talvez o projeto não tenha sido reiniciado após as alterações no código.

Abra a tela de configurações do IntelliJ (atalho CTRL + ALT + S) e verifique dentro do menu Build, Execution, Deployment -> Compiler se a opção Build project automatically está marcada:

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

Verifique também no meu Advanced Settings se a opção Allow auto-make to start... está marcada:

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

Pare o projeto e execute novamente após essas mudanças

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

como pode ver esta tudo marcado, tambem em Advanced Settings

eu tenho como reiniciar as configurações e ajustar tudo de novo?

Seu projeto é esse aqui? https://github.com/Angelag-39/registro-de-Usuario-Java

Atualize ele no GitHub que vou baixar e analisar qual o problema

https://github.com/Dondavid39/registro-medicos-usuarios-pacientes.git

pode tentar por aqui porfavor... ainda nao consigo atualizar esse projeto no meu Git

solução!

O problema está na sua classe ServicioAutenticacion:

@Service
public class ServicioAutenticacion implements UserDetailsService {
    @Autowired
private UsuarioRepositorio repositorio;
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        return repositorio.findByLogin(username);
    }
    @Bean
    public PasswordEncoder contrasenaEnCodigo(){
        return new BCryptPasswordEncoder();
    }
}

Apague o método contrasenaEnCodigo, pois isso já foi configurado na classe ConfiguracionesSeguridad:

@Service
public class ServicioAutenticacion implements UserDetailsService {
    @Autowired
private UsuarioRepositorio repositorio;
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        return repositorio.findByLogin(username);
    }

}

deu certo, apareceu o codigo 200, obg mesmo Insira aqui a descrição dessa imagem para ajudar na acessibilidade