Tela de login/autenticação em Java Web

5 respostas
java
Jacksonn123

Bom dia pessoal, Estou apreendendo Java web mas a minha tela de login não esta logando e nem dando sinal de erros ao clicar em entrar.

Classe Funcionário

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;
import org.hibernate.validator.constraints.br.CPF;

@Entity
@Table(name = "tb_funcionarios")
@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.cpf = :cpf AND funcionario.senha = :senha")

})
public class Funcionario {

	@GeneratedValue(strategy = GenerationType.AUTO)
	@Id
	@Column(name = "fun_codigo")
	private Long codigo;

	@NotEmpty(message = "Insira o Nome")
	@Column(name = "fun_nome", length = 50, nullable = false)
	private String nome;
 
	
	@CPF(message = "CPF Incorreto")
	@Column(name = "fun_cpf", length = 14, nullable = false, unique = true)
	private String cpf;

	@NotEmpty(message = "Insira a Senha")
	@Size(min = 5, max = 15, message = "Sua senha deve conter de 5 a 15 caracteres")
	@Column(name = "fun_senha", length = 50, nullable = false)
	private String senha;
    
	@NotEmpty(message = "Insira um cargo")
	@Column(name = "fun_funcao", length = 50, nullable = false)
	private String funcao;

	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 getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getFuncao() {
		return funcao;
	}

	public void setFuncao(String funcao) {
		this.funcao = funcao;
	}

	@Override
	public String toString() {
		return "Funcionario [codigo=" + codigo + ", nome=" + nome + ", cpf=" + cpf + ", senha=" + senha + ", funcao="
				+ funcao + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Funcionario other = (Funcionario) obj;
		if (codigo == null) {
			if (other.codigo != null)
				return false;
		} else if (!codigo.equals(other.codigo))
			return false;
		return true;
	}
	
}

Classe FuncionáriosDAO

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.Vendas.domain.Funcionario;
import br.com.Vendas.util.HibernateUtil;

public class FuncionariosDAO {

	public void salvar(Funcionario funcionario) {
		Session sessao = HibernateUtil.getSessionFactory().openSession();

		Transaction transacao = null;

		try {
			transacao = sessao.beginTransaction(); // abrindo a transação
			sessao.save(funcionario);
			transacao.commit(); // confirmando a transação

		} catch (RuntimeException ex) {
			if (transacao != null) {
				transacao.rollback(); // desfaz a transação
			}

		}

		finally {
			sessao.close();
		}

	}

	@SuppressWarnings("unchecked")
	public List<Funcionario> listar() {
		Session sessao = HibernateUtil.getSessionFactory().openSession();

		List<Funcionario> funcionario = null;

		try {

			Query consulta = sessao.getNamedQuery("Funcionario.listar");
			funcionario = consulta.list();

		} catch (RuntimeException ex) {
			throw ex;
		}

		finally {
			sessao.close();
		}

		return funcionario;
	}

	public Funcionario buscarPorCodigo(Long codigo) {
		Session sessao = HibernateUtil.getSessionFactory().openSession();

		Funcionario funcionario = null;

		try {

			Query consulta = sessao.getNamedQuery("Funcionario.buscarPorCodigo");
			consulta.setLong("codigo", codigo);
			funcionario = (Funcionario) consulta.uniqueResult();

		} catch (RuntimeException ex) {
			throw ex;
		}

		finally {
			sessao.close();
		}

		return funcionario;
	}

	public void excluir(Funcionario funcionario) {
		Session sessao = HibernateUtil.getSessionFactory().openSession();

		Transaction transacao = null;

		try {
			transacao = sessao.beginTransaction(); // abrindo a transação
			sessao.delete(funcionario);
			transacao.commit(); // confirmando a transação

		} catch (RuntimeException ex) {
			if (transacao != null) {
				transacao.rollback(); // desfaz a transação
			}

		}

		finally {
			sessao.close();
		}

	}

	public Funcionario autenticar(String cpf, 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("cpf", cpf);
			consulta.setString("senha", senha);
			// Cria consulta do funcionário
			funcionario = (Funcionario) consulta.uniqueResult();
		} catch (RuntimeException ex) {
			throw ex;
		} finally {
			sessao.close();
		}
		return funcionario;
	}

	public void editar(Funcionario funcionario) {
		Session sessao = HibernateUtil.getSessionFactory().openSession();

		Transaction transacao = null;

		try {
			transacao = sessao.beginTransaction(); // abrindo a transação

			sessao.update(funcionario);
			transacao.commit(); // confirmando a transação

		} catch (RuntimeException ex) {
			if (transacao != null) {
				transacao.rollback(); // desfaz a transação
			}

		}

		finally {
			sessao.close();
		}

	}
}

Classe AutenticaçãoBean

import java.io.IOException;

import javax.faces.context.FacesContext;

import org.apache.commons.codec.digest.DigestUtils;
import org.omnifaces.util.Faces;
import org.omnifaces.util.Messages;
import br.com.Vendas.DAO.FuncionariosDAO;
import br.com.Vendas.domain.Funcionario;

public class AutenticarBean {
	Funcionario funcionarioLogado = new Funcionario();

	public void autenticar() {
		try {
			FuncionariosDAO funcionarioDAO = new FuncionariosDAO();
			// Recebe login e senha do usuário e chama método DAO para autenticar
			funcionarioLogado = funcionarioDAO.autenticar(funcionarioLogado.getCpf(),
					DigestUtils.md5Hex(funcionarioLogado.getSenha()));
			// Verifica se o funcionário é nulo ou diferente
			if (funcionarioLogado == null) {
				Messages.addGlobalError("Usuário ou senha invalida");
			} else {
				// Redireciona para página principal após autenticar o funcionário.
				FacesContext.getCurrentInstance().getExternalContext().redirect("principal.xhtml");
			}
		} catch (IOException erro) {
			erro.printStackTrace();
			Messages.addGlobalError(erro.getMessage());
		}
	}
}

Autenticação.xhtml

<?xml version="1.0" encoding="UTF-8" ?> Autenticação
<p:dialog header="Autenticação" closable="false" draggable="false"
	resizable="false" modal="true" visible="true">
	<h:form>
		<h:panelGrid columns="2">
			<p:outputLabel for="cpf" value="CPF:" />
			<p:inputMask id="cpf" mask="[CPF removido]" size="20"
				required="true" requiredMessage="O campo CPF é obrigatório"
				value="#{MBFuncionarios.funcionario.cpf}" />

			<p:outputLabel for="senha" value="Senha:" />
			<p:password id="senha" maxlength="15" size="20" required="true"
				requiredMessage="O campo Senha é obrigatório"
				value="#{MBFuncionarios.funcionario.senha}" />
		</h:panelGrid>

		<h:panelGrid columns="1">
			<p:commandButton value="Entrar" update=":mensagem"
				actionListener="#{autenticacaoBean.autenticar}" />
		</h:panelGrid>
	</h:form>
</p:dialog>

</h:body>

Sem%20t%C3%ADtulo

5 Respostas

Mike

Falta algumas anotações para o seu bean

@Named
@SessionScoped
public class AutenticarBean implements Serializable {
}

Se o seu projeto não tiver CDI, troca o @Named por @ManagedBean do pacote javax.faces

Jacksonn123

acho que no html deve ter algum problema que quando clico no entrar não muda nada nem erro dá :frowning_face:

Mike

Adicione essa tag em baixo do form:

PrimeFaces < 6.2

<p:messages autoUpdate="true" closable="true" />

PrimeFaces >= 6.2

<p:messages closable="true">
    <p:autoUpdate />
</p:messages>

E ve se aparece algum erro quando você fizer a requisição

Jacksonn123

Em qual parte da Autenticação.xhtml eu tenho que por ?

Mike

Bom… eu só vi o seu dialog, entao coloca no começo do form. Entre o form e o panelGrid

Criado 10 de abril de 2019
Ultima resposta 10 de abr. de 2019
Respostas 5
Participantes 2