pagina XHTML
Código HTML:
Ver original
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"> <f:loadBundle basename="com.jonathan.msgs.message" var="msgs"/> <h:head> <link href="#{appBean.baseUrl}resources/css/login.css" type="text/css" rel="stylesheet" /> </h:head> <h:body> <div class="conteiner"> <p:growl id="growl" sticky="true" showDetail="true" life="3000" /> <h:form id="formLogin"> <p:panel id="basic" header="Login" style="margin-bottom:20px"> <h:panelGrid columns="2" cellpadding="10"> <h:panelGrid columns="2" cellpadding="5"> <h:outputLabel for="username" value="#{msgs.log_usuario}" /> <p:inputText id="usuUsuario" value="#{loginBean.usuario.usuUsuario}" required="true" label="#{msgs.log_usuario}" /> <h:outputLabel for="password" value="#{msgs.log_password}" /> <p:password id="usuPassword" value="#{loginBean.usuario.usuPassword}" required="true" label="#{msgs.log_password}" /> <f:facet name="footer"> <p:commandButton value="#{msgs.log_entrar}" update=":growl" actionListener="#{loginBean.login(actionEvent)}" oncomplete="handleLoginRequest(xhr, status, args)" icon="ui-icon-key" /> </f:facet> </h:panelGrid> </h:panelGrid> </p:panel> </h:form> </div> <script type="text/javascript"> function handleLoginRequest(xhr, status, args) { if (args.validationFailed || !args.loggedIn) { jQuery('#formLogin').effect("shake", {times: 5}, 1000); } else { location.href = args.ruta; } } </script> </h:body> </html>
loginBean
Código Java:
Ver original
RequestContext context = RequestContext.getCurrentInstance(); LoginDao loginDao = new LoginDaoImpl(); boolean loggedIn = false; FacesMessage msg = null; try { this.usuario = loginDao.logear(this.usuario); if(usuario != null){ loggedIn = true; FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("usuUsuario", this.usuario.getUsuUsuario()); msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Bienvenido al sistema", this.usuario.getUsuNombre()); ruta = MyUtil.basePathLogin() + "views/inicio.xhtml"; } else{ loggedIn = false; msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Error de Logeo", "Usuario y/o Contraseña Incorrectos"); } e.printStackTrace(); } FacesContext.getCurrentInstance().addMessage(null, msg); context.addCallbackParam("loggedIn", loggedIn); context.addCallbackParam("ruta", ruta); } public boolean verificarSesion(){ boolean estado; if(FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuUsuario") == null){ estado = false; } else{ estado = true; } return estado; }
loginDaoImpl
Código Java:
Ver original
public Usuario logear(Usuario usuario) { Session session = HibernateUtil.getSessionFactory().openSession(); Usuario us = null; try { session.getTransaction().begin(); + usuario.getUsuUsuario() + "' and usuPassword = '" + Encript_MD5.getStringMessageDigest(usuario.getUsuPassword(), Encript_MD5.MD5) + "'"; Query query = session.createQuery(hql); if (!query.list().isEmpty()) { us = (Usuario) query.list().get(0); } session.getTransaction().commit(); session.getTransaction().rollback(); } return us; }
Hasta aqui me redirecciona a mi pagina principal la cual contiene un template con su respectivo menu, pero al intentar acceder a otra pagina me regresa al login.
Esto coloco en cada pagina xhtml
<h:outputLabel value="USTED NO HA INICIADO SESIÓN" rendered="#{loginBean.verificarSesion() eq false}" />
<h:form rendered="#{loginBean.verificarSesion()}">
</h:form>