Hola soy nuevo en esto de la programacion web y tengo un problema con JSF, tenemos una pagina principal que pide un usuario y contraseña, al ingresar un administrador puede ver un enlace a una pagina que pide ingresar de nuevo el usuario y contraseña
La idea es que ya no pida el usuario, si no q con la cookie generada al ingresar a la pagina principal ingrese a esa otra pagina, este es el codigo de la pagina de login.jsp
Código:
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ page language="java" import="javax.servlet.http.Cookie"%>
<HTML>
<HEAD>
<TITLE>
Generador de Cursos y Exámenes
</TITLE>
<link rel="stylesheet" type="text/css" href="/SIRH_CognosGen/jquery/login/style.css" />
</HEAD>
<BODY>
<f:view>
<div align='center'>
<h:form>
<table>
<tr><td><h:commandLink action='ir_candidatos'>Candidatos</h:commandLink></td></tr></table>
<table>
<tr><td colspan = "2"><h:outputText value="#{loginUser.msg}" style="color:red;"/></td></tr>
<tr><td><h:inputText value="#{loginUser.user}"/></td></tr>
<tr><td><h:outputText value="Usuario" /></td><td><h:inputText value="#{loginUser.user}" /></td></tr>
<tr><td><h:outputText value="Contraseña:" /></td><td><h:inputSecret value="#{loginUser.pass}" /></td></tr>
<tr><td colspan = "2" align ='center'><br/><h:commandButton action="#{loginUser.CheckUser}" value='Ingresar'/></td></tr>
</table>
</h:form>
</div>
</f:view>
</BODY>
</HTML>
y la clase de java que hace el CheckUser tiene este codigo
Código:
public String CheckUser(){
//public String CheckUser(String user){
if ("CPCAQ00142".equals(getUser()) )
//if ("Administrador".equals(getUser()) && "Administrador".equals(getPass()) )
return "ir_admin";
else if ("Adminfiles".equals(getUser()) && "Adminfiles".equals(getPass()) )
//else if ("Adminfiles".equals(getUser()) && "Adminfiles".equals(getPass()) )
return "adminfiles";
else
{
setMsg("Usuario no permitido");
return "";
}
}
Yo intente agregarle esto a login.jsp
Código:
<%@page import="java.io.PrintWriter"%>
<%@page import="javax.faces.FacesException"%>
<%@page import="com.sun.xml.internal.ws.handler.HandlerException"%>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@page import="javax.servlet.http.Cookie" %>
<%@page import="javax.faces.context.FacesContext" %>
<%@page import="javax.faces.application.Application" %>
<%@page import="org.cpc.azt.com.dao.utilobject.DaoQuerys" %>
<%@page import="org.cpc.azt.com.sirh.beans.LoginUser" %>
<%@page import = "org.cpc.azt.com.sirh.util.*"%>
<%
HttpServletRequest requests = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
//HttpSession sessionA = request.getSession();
Cookie[] cookies = requests.getCookies();
DaoQuerys dq = new DaoQuerys();
LoginUser lg = new LoginUser();
PrintWriter pw = response.getWriter();
String user_id = "";
String user = "";
Boolean existeCookie = false;
Boolean existeUsuario = false;
FacesContext facesContext = FacesContext.getCurrentInstance();
int numCookies = 0;
try
{
numCookies = cookies.length;
}catch(NullPointerException e)
{
numCookies = 0;
}
if(numCookies>0){
for(int i = 0; i < numCookies; i++)
{
if(cookies[i].getName().equals(ConstantesVariables.COOKIE_NAME))
{
user_id = dq.PermisoAdmin(cookies[i].getValue());
existeCookie = true;
if(!user_id.equals("null")) existeUsuario = true;
}
}
}
if(!existeCookie)
{
response.sendRedirect(no_user.jsp);
//RequestDispatcher view = request.getRequestDispatcher("http://www.google.com");
//view.forward(request,response);
}
else
{
if(!existeUsuario) response.sendRedirect(no_user.jsp);
else
{
try{
facesContext = FacesContext.getCurrentInstance();
LoginUser myBean=(LoginUser)facesContext.getApplication().getVariableResolver().resolveVariable(facesContext,"loginUser");
myBean.setToken(user_id);
myBean.setUser(user_id);
myBean.CheckUser();
}
catch(FacesException e){}
RequestDispatcher view = request.getRequestDispatcher(header.jsp);
view.forward(request,response);
}
}
%>
Y quitarle la parte de codigo HTML que tiene, el chiste es que al hacer esta modificacion si me envia a la otra pagina, pero ya los enlaces q estn dentro de la otra pgina no hacen nada, lo que entiendo es porque no retorna "ir_admin" de LoginUser, alguien sabe como hacerle???