Deu certo. Todas as paginas estao sendo direcionada para a "login.jsp" ... Gostaria de saber como faço pra liberar algumas paginas ... tipo : Contato.jsp , index.jsp, cadCliente.jsp.
Gostaria de saber tb a respeito de proteção. Se essa forma eh a forma mais segura. Utilizo o Hibernate com Criteria.
web.xml<?xml version="1.0" encoding="ASCII"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<context-param>
<description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>resources.application</param-value>
</context-param>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
<init-param>
<param-name>createTempFiles</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<context-param>
<param-name>org.richfases.SKIN</param-name>
<param-value>blueSky</param-value>
</context-param>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>3</session-timeout>
</session-config>
<!-- FILTER -->
<filter>
<filter-name>Logar</filter-name>
<filter-class>br.com.Projeto.Util.Seguranca</filter-class>
</filter>
<filter-mapping>
<filter-name>Logar</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<!-- FILTER -->
</web-app>
package br.com.Projeto.Util;
import java.io.IOException;
import java.util.logging.LogRecord;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import br.com.Projeto.Model.Usuario;
/**
* Servlet Filter implementation class Seguranca
*/
public class Seguranca implements Filter {
/**
* Default constructor.
*/
public Seguranca() {
// TODO Auto-generated constructor stub
}
private static final String SIGNON_PAGE_URI = "Acesso/login.jsf";
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
if (!this.authorize((HttpServletRequest) req)) {
request.getRequestDispatcher(SIGNON_PAGE_URI).forward(req, res);
} else {
response.setHeader("Cache-Control", "no-store");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
chain.doFilter(req, res);
}
}
public void destroy() {
}
// Metodo que verifica o bean em sessao se esta logado.
private boolean authorize(HttpServletRequest req) {
boolean retorno = false;
HttpSession session = req.getSession(false);
if (session != null) {
Usuario usuario = (Usuario) session.getAttribute("usuarioLogado");
if ((usuario != null) && (usuario.isLogado() == true)) {
retorno = true;
}
}
return retorno;
}
public boolean isLoggable(LogRecord record) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
package br.com.Projeto.Util;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import br.com.Projeto.DAO.DAO;
import br.com.Projeto.Model.Usuario;
public class Login {
private String nome; // get/set
private String senha; // get/set
private List<Usuario> listaUsuarios;
private Usuario usuarioLogado = null;
private DAO<Usuario> daoUsuario = new DAO<Usuario>(Usuario.class);
public String checkLogin() throws Exception {
FacesContext fc = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) fc.getExternalContext().getSession(
false);
if (nome != null && senha != null) {
listaUsuarios = daoUsuario.buscaGenerica("nome", nome, "senha",
senha);
if (listaUsuarios.size() == 1)
System.out.println("Usuario Logado.");
usuarioLogado = listaUsuarios.get(0);
usuarioLogado.setLogado(true);
session.setAttribute("usuarioLogado", usuarioLogado);
return "successo";
} else {
usuarioLogado.setLogado(false);
return "erro";
}
}
public Usuario getUsuarioLogado() {
return usuarioLogado;
}
public void setUsuarioLogado(Usuario usuarioLogado) {
this.usuarioLogado = usuarioLogado;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
}
public class DAO<T> {
private static Logger logger = Logger.getLogger(DAO.class);
private Class<T> persistentClass;
private Session session = HibernateUtil.getSession();
public DAO(Class<T> persistentClass) {
this.persistentClass = persistentClass;
}
@SuppressWarnings("unchecked")
public List<T> buscaGenerica(String coluna,String nome, String coluna2 ,String nome2) {
session.beginTransaction().begin();
Criteria c = session.createCriteria(persistentClass);
c.add(Restrictions.ilike(coluna, nome, MatchMode.ANYWHERE));
c.add(Restrictions.ilike(coluna2, nome2, MatchMode.ANYWHERE));
c.add(Restrictions.eq("status",true));
session.beginTransaction().commit();
return c.list();
}
}
Obrigado. Agradeço a ajuda e Feliz ano novo :D