Java Web login/authentication screen

Asked

Viewed 574 times

0

Good morning guys, I am seizing Java web but my login screen is not logging in and not giving error signal when clicking enter.

Working class

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;
    }

}

Class Employees Dao

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();
        }

    }
}

Class Authentication Bean

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());
        }
    }
}

Authentication.xhtml Authentication

<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="999.999.999-99" 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>

inserir a descrição da imagem aqui

  • Where the authenticator is mapped?

  • I don’t know if I mapped correctly, where do I see ? in web.xml or in Hibernate.cfg.xml ?

1 answer

1

Man, put a break point at the beginning of the method autenticar, See if he’s being triggered. Put a tryCatch in the method.

and a review in this query query = "SELECT employee FROM Functionwork WHERE employee.Cpf = :Cpf AND function.password = :password")

Another thing I couldn’t find: in your boot, you’re calling MBFuncionarios.funcionario.senha Where is his injection?

  • I don’t know, I think it’s missing, how should I create ?

  • You must send the page information to a bean class. The class has the get and set methods of the Function object. In your button, you are sending this information to a class that I believe should be your Bean, (Mbfuncionarios.funcio.password). Is there a class with the name Mbfuncionarios, where this class has a private attribute of type employees, which has Gett and Sett ? Give a read on this topic here, the second comment is well explained: https://answall.com/questions/22444/o-que-%C3%A9-e-para-que-que-servir-um-java-bean

Browser other questions tagged

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