1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Sistema de Login com problema

Boa tarde, pessoal.

Estou fazendo um sistema de login, seguindo este tutorial:

https://www.youtube.com/watch?v=hL38BZjsc3E

Mas não estou conseguindo fazê-lo funcionar. Abaixo seguem minhas classes, pagina xhtml e os prints do debug feito com o netbeans. Alguém pode, por favor, me dar uma dica do que pode estar errado? Muito obrigado.

1º) Pagina login.xhtml:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Login</title>
        <link href="../resources/css/login.css" type="text/css" rel="stylesheet"/>

    </h:head>
    <h:body>
        <div class="container" >
                <h:form id="loginForm">
                     <p:growl id="growl" showDetail="true" life="3000" />
                    <p:panel header="Acesso ao Sistema">
                    <h:panelGrid columns="2" cellpadding="5">
                            <h:outputLabel for="username" value="Usuário:" />
                            <p:inputText id="username" value="#{loginBean.usuario.usuarioEmail}" ></p:inputText>
                            <h:outputLabel for="password" value="Senha:" />
                            <p:password id="password" value="#{loginBean.usuario.usuarioSenha}"  feedback="false"></p:password>
                            <f:facet name="footer">
                                <p:commandButton id ="loginButton" actionListener="#{loginBean.login(actionEvent)}" value="Login" update="growl" ajax="true"
                                                 oncomplete="handleLoginRequest(xhr, status, args)" icon="icon-login"/>
                            </f:facet> 
                    </h:panelGrid>
                    </p:panel>
                   </h:form>
            </div>
<script type="text/javascript">
    function handleLoginRequest(xhr, status, args) {
        if(args.validationFailed || !args.loggedIn) {
            jQuery('#loginForm').effect("shake", {times:5}, 100);
        }
        else {
            location.href = args.rota;
        }
    }
</script>
    </h:body>
</html>

2º) Classe loginBean:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package beans;

import java.awt.event.ActionEvent;
import java.io.Serializable;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import login.dao.UsuarioDao;
import login.dao.UsuarioDaoImp;
import model.Usuarios;
import org.primefaces.context.RequestContext;
import util.MyUtil;

/**
 *
 * @author Fred
 */
@Named(value="loginBean")
@SessionScoped
public class loginBean implements Serializable{

    private Usuarios usuario;
    private UsuarioDao usuarioDao;
    public loginBean() {
        this.usuarioDao = new UsuarioDaoImp();
        if(this.usuario == null){
            this.usuario = new Usuarios();
        }
    }

    private String username;
    private String password;

    public Usuarios getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuarios usuario) {
        this.usuario = usuario;
    }



    public void login(ActionEvent actionEvent){
        RequestContext context = RequestContext.getCurrentInstance();
        FacesMessage msg;
        boolean loogedIn;
        String rota = "";

        this.usuario = this.usuarioDao.login(this.usuario);

       if(this.usuario != null) {
            loogedIn = true;
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("usuario", this.usuario.getUsuarioEmail());
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Bem vindo(a), ",this.usuario.getUsuarioNome());
            rota = MyUtil.basePathLogin() + "painel.xhtml";
        } else {
            loogedIn = false;
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro de Autenticação", "Usuário ou Senha Inválidos");
            if(this.usuario == null){
                this.usuario = new Usuarios();
            }
        }

        FacesContext.getCurrentInstance().addMessage(null, msg);
        context.addCallbackParam("loggedIn", loogedIn);
        context.addCallbackParam("rota", rota);
    }
}

3º) Classe UsuarioDao

package login.dao;

import model.Usuarios;


public interface UsuarioDao {
    public Usuarios findByUsuario(Usuarios usuario);
    public Usuarios login(Usuarios usuario);
}

4º) Classe UsuarioDaoImp:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package login.dao;

import model.Usuarios;
import org.hibernate.Session;
import util.HibernateUtil;

/**
 *
 * @author Fred
 */
public class UsuarioDaoImp implements UsuarioDao{

    @Override
    public Usuarios findByUsuario(Usuarios usuario) {
         Usuarios model = null;
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         String sql = "FROM Usuarios WHERE usuario_email = '" + usuario.getUsuarioEmail() + "'";
         System.out.println(usuario.getUsuarioEmail());
         try{
             session.beginTransaction();
             model = (Usuarios) session.createQuery(sql).uniqueResult();
             session.beginTransaction().commit();
         }
         catch(Exception e){
             session.beginTransaction().rollback();
         }
         return null;
    }

    @Override
    public Usuarios login(Usuarios usuario) {
        Usuarios model = this.findByUsuario(usuario);
        if(model != null){
            if(!usuario.getUsuarioSenha().equals(model.getUsuarioSenha())){
                model = null;
            }
        }
        return model;
    }

}

5º) print do banco de dados:

https://www.filepicker.io/api/file/iQ0EBAZDQh2FLcF1Tc8n

6º) Primeiro print do debug com netbeans:

https://www.filepicker.io/api/file/kKmIlDA2S3WowRg0LRRz

7º) Segundo print do debug com netbeans:

https://www.filepicker.io/api/file/HIuA2lzZS8OzspHfJXZD

  • posta o erro que deu no console.

    Johnatan Dantas   27 de set de 2014
  • o console do glassfish só mostra isso, Johnatan: Informações: fred Informações: Hibernate: select usuarios0.USUARIO_ID as USUARIO1_0, usuarios0.USUARIO_DELETADO as USUARIO2_0, usuarios0.USUARIO_EMAIL as USUARIO3_0, usuarios0.USUARIO_NOME as USUARIO4_0, usuarios0.USUARIO_PERFIL as USUARIO5_0, usuarios0.USUARIO_SENHA as USUARIO6_0 from condominio.usuarios usuarios0_ where usuario_email='fred'

    FredeRamos   27 de set de 2014
  • Não sei qual é o seu erro mas uma coisa de errado é ter que abrir uma transação **session.beginTransaction(); e comitar depois apenas para fazer um select.

    Dilnei Cunha   27 de set de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java-ee ou faça a sua própria pergunta.