Estou com um erro para autenticar o usuário no meu sistema, ele não diferencia um login e senha, por exemplo:
Login e senha do banco:
Login: admin
Senha: admin
Se digitar:
Login: Admin
Senha: admin
O usuário é autenticado e é redirecionado para a página principal.
Estou usando HQL para pesquisa do usuário.
Segue código abaixo:
(AutenticaBean)
// Método que autentica o usuário
public void autenticar() {
try {
FuncionarioDAO funcionarioDAO = new FuncionarioDAO();
//Recebe login e senha do usuário e chama método DAO para autenticar
funcionarioLogado = funcionarioDAO.autenticar(funcionarioLogado.getLogin(), DigestUtils.md5Hex(funcionarioLogado.getSenha()));
//Verifica se o funcionário é nulo ou diferente
if (funcionarioLogado == null) {
FacesUtil.adicionaMensagemErro(“Usuário ou senha inválidos.”);
} else {
//Redireciona para página principal após autenticar o funcionário.
FacesContext.getCurrentInstance().getExternalContext().redirect(“principal.xhtml”);
}
} catch (RuntimeException ex) {
FacesUtil.adicionaMensagemErro("Erro ao tentar autenticar no sistema: " + ex.getMessage());
} catch (IOException e) {
e.printStackTrace();
}
}
DAO
//Método que autentica o funcionário com login e senha
public Funcionario autenticar(String login, String senha) {
//Cria a sessão
Session sessao = HibernateUtil.getSessionFactory().openSession();
Funcionario funcionario = null;
try {
//Executa a query de consulta
Query consulta = sessao.getNamedQuery("Funcionario.logar");
//Recebe os dados informados
consulta.setString("login", login);
consulta.setString("senha", senha);
//Cria consulta do funcionário
funcionario = (Funcionario) consulta.uniqueResult();
} catch (RuntimeException ex) {
throw ex;
} finally {
sessao.close();
}
return funcionario;
}
}
Entidade Funcionario
@Entity
@NamedQueries({ @NamedQuery(name = “Funcionario.listar”, query = “SELECT funcionario FROM Funcionario funcionario”),
@NamedQuery(name = “Funcionario.buscarPorCodigo”, query = “SELECT funcionario FROM Funcionario funcionario WHERE funcionario.codigo = :codigo”),
@NamedQuery(name = “Funcionario.logar”, query = “SELECT funcionario FROM Funcionario funcionario WHERE funcionario.login = :login AND funcionario.senha = :senha”),
@NamedQuery(name = “Funcionario.esqueciSenha”, query = “SELECT funcionario FROM Funcionario funcionario WHERE funcionario.email =:email”)})
@Table(name = “tbl_funcionario”)
public class Funcionario {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = “fun_codigo”, nullable = false)
private Long codigo;
@NotEmpty(message = "O campo nome é obrigatório.")
@Column(name = "fun_nome", nullable = false, length = 50)
private String nome;
@NotEmpty(message = "O campo data de nascimento é obrigatório.")
@Column(name = "fun_dt_nasc", nullable = false)
private String dt_nasc;
@NotEmpty(message = "O campo cpf é obrigatório.")
@Column(name = "fun_cpf", nullable = false, length = 14, unique = true)
private String cpf;
@NotEmpty(message = "O campo usuário é obrigatório.")
@Column(name = "fun_login", nullable = false, length = 45)
private String login;
@NotEmpty(message = "O campo email é obrigatório")
@Column(name = "fun_email", nullable = false, length = 120)
private String email;
@NotEmpty(message = "O campo senha é obrigatório.")
@Column(name = "fun_senha", nullable = false, length = 50)
private String senha;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "tbl_permissao_per_codigo", nullable = false)
private Permissao permissao;
// Criando Get e Set
public Long getCodigo() {
return codigo;
}
public void setCodigo(Long codigo) {
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDt_nasc() {
return dt_nasc;
}
public void setDt_nasc(String dt_nasc) {
this.dt_nasc = dt_nasc;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public Permissao getPermissao() {
return permissao;
}
public void setPermissao(Permissao permissao) {
this.permissao = permissao;
}
Alguém pode me ajuda a fazer com que o usuário seja validado conforme login e senha cadastrado no banco, ele tem que diferenciar as maiúsculas e minúsculas.
Obrigado.