Hola a todos, estoy trabajando con hibernate y PrimeFaces, termine un login, que funciona corrrectamente, y me redirecciona al menu de mi sistema, pero cuando intento acceder a otra pagina me regresa al login, adjunto mi codigo
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>
<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>
<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;
}
}
</h:body>
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 originalpublic Usuario logear(Usuario usuario) {
Session session = HibernateUtil.getSessionFactory().openSession();
Usuario us = null;
try {
session.getTransaction().begin();
String hql
= "from Usuario where usuUsuario = '" + 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();
System.
out.
println("No se puede logear " + e.
getMessage()); 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>