Error validating Java user, Spring

Asked

Viewed 303 times

0

I have an error validating the user next to the database.
I’ve debugged and the data (which you see from the front end) is being received by the API.
The method that makes the search in the database is correct, but the strange thing is that comes the user and the password but the id_entidade and the id_entidade_administrador comes null, then invalidates the authentication.

Follows the code.

Class Entity Administrators

@Entity
@Table(name = "Entidades_administradores")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Entidadesadministradores.findAll", query = "SELECT e FROM Entidadesadministradores e"),
    @NamedQuery(name = "Entidadesadministradores.findByIdentidadeadministrador", query = "SELECT e FROM Entidadesadministradores e WHERE e.identidadeadministrador = :identidadeadministrador"),
    @NamedQuery(name = "Entidadesadministradores.findByUsuarioadministrador", query = "SELECT e FROM Entidadesadministradores e WHERE e.usuarioadministrador = :usuarioadministrador"),
    @NamedQuery(name = "Entidadesadministradores.findBySenhaadministrador", query = "SELECT e FROM Entidadesadministradores e WHERE e.senhaadministrador = :senhaadministrador")})
public class Entidadesadministradores implements Serializable {    
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "Id_entidade_administrador")
    private Long identidadeadministrador;

    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 50)
    @Column(name = "Usuario_administrador")
    private String usuarioadministrador;

    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "Senha_administrador")
    private String senhaadministrador;                        

    @JoinColumn(name = "Id_entidade", referencedColumnName = "Id_entidade")
    @ManyToOne(optional = false)
    private Entidades identidade;

    public Entidadesadministradores() {
    }

    public Entidadesadministradores(Long identidadeadministrador) {
        this.identidadeadministrador = identidadeadministrador;
    }

    public Entidadesadministradores(Long identidadeadministrador, String usuarioadministrador, String senhaadministrador) {
        this.identidadeadministrador = identidadeadministrador;
        this.usuarioadministrador = usuarioadministrador;
        this.senhaadministrador = senhaadministrador;
    }

    public Long getIdentidadeadministrador() {
        return identidadeadministrador;
    }

    public void setIdentidadeadministrador(Long identidadeadministrador) {
        this.identidadeadministrador = identidadeadministrador;
    }

    public String getUsuarioadministrador() {
        return usuarioadministrador;
    }

    public void setUsuarioadministrador(String usuarioadministrador) {
        this.usuarioadministrador = usuarioadministrador;
    }

    public String getSenhaadministrador() {
        return senhaadministrador;
    }

    public void setSenhaadministrador(String senhaadministrador) {
        this.senhaadministrador = senhaadministrador;
    }

    public Entidades getIdentidade() {
        return identidade;
    }

    public void setIdentidade(Entidades identidade) {
        this.identidade = identidade;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (identidadeadministrador != null ? identidadeadministrador.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Entidadesadministradores)) {
            return false;
        }
        Entidadesadministradores other = (Entidadesadministradores) object;
        if ((this.identidadeadministrador == null && other.identidadeadministrador != null) || (this.identidadeadministrador != null && !this.identidadeadministrador.equals(other.identidadeadministrador))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Entidadesadministradores[ identidadeadministrador=" + identidadeadministrador + " ]";
    }        
}

Logincontroller class

 @RestController
    public class LoginController {        
        @Autowired
        private EntidadesAdministradoresService eaService;

        @RequestMapping(value = "/autenticar", consumes = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
        public LoginResponse autenticar(@RequestBody Entidadesadministradores entidadesAdministradores) throws ServletException {

            //verifica se foram digitados o login e senha no front end
            if (entidadesAdministradores.getUsuarioadministrador() == null
                    || entidadesAdministradores.getSenhaadministrador() == null) {
                throw new ServletException("Nome ou senha obrigatório");
            }

            // busca no banco de dados
//aqui ocorre o erro entAdministradoresAutenticado fica null nesse ponto            
           Entidadesadministradores entAdministradoresAutenticado = eaService.buscarPorNome(entidadesAdministradores.getUsuarioadministrador());

            if (entAdministradoresAutenticado == null) {
                throw new ServletException("Usuário não encontrado");
            } 

            // compara a senha vinda do banco de dados com a senha vinda da tela
            if (!entAdministradoresAutenticado.getSenhaadministrador()
                    .equals(entidadesAdministradores.getSenhaadministrador())) {
                throw new ServletException(" Senha inválida");
            }

            String token = Jwts.builder().setSubject(entAdministradoresAutenticado.getUsuarioadministrador())
                    .signWith(SignatureAlgorithm.HS512, "digi2fred")
                    .setExpiration(new Date(System.currentTimeMillis() + 3 * 60 * 1000)).compact();

            return new LoginResponse(token); 
        }       

        private class LoginResponse {
            public String token;

            public LoginResponse(String token) {
                this.token = token;
            }

            public String getToken() {
                return token;
            }        
        }        
    }

Class Entidadeadministradoresservice

@Service
public class EntidadesAdministradoresService {    
    @Autowired
    EntidadesAdministradoresRepository eaRepository; 

    public Entidadesadministradores buscarPorNome(String usuarioAdministrador){     
        return eaRepository.buscarPorNome(usuarioAdministrador);
    }       
}

Class Entidadesadministratorsrepository

@Repository
public interface EntidadesAdministradoresRepository extends JpaRepository<Entidadesadministradores,Integer> {
    @Query(value="Select e from Entidadesadministradores e where e.usuarioadministrador=:parametroUsuario")
    public Entidadesadministradores buscarPorNome(@Param("parametroUsuario") String usuarioAdministrador);   
}

the error that occurs is:

Usuário não encontrado
LoginController.autenticar(LoginController.java:39) ~[classes/:na]

1 answer

1


Maybe if you change the section

@Repository
public interface EntidadesAdministradoresRepository extends JpaRepository<Entidadesadministradores,Integer> {
    @Query(value="Select e from Entidadesadministradores e where e.usuarioadministrador=:parametroUsuario")
    public Entidadesadministradores buscarPorNome(@Param("parametroUsuario")String usuarioAdministrador);   
}

for

@Repository
public interface EntidadesAdministradoresRepository extends JpaRepository<Entidadesadministradores,Integer> {
    @Query(value="Select e from Entidadesadministradores e where lower(e.usuarioadministrador) = :parametroUsuario")
    public Entidadesadministradores buscarPorNome(@Param("parametroUsuario")String usuarioAdministrador);   
}

your search back to work.

Another option is to use the LIKE in place of = as a method of comparison.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.