[quote=rodrigo.ferreira]Bom dia!!!
É possível fazer utilizando Struts sim… é possível fazer com qualquer tecnologia web (Struts/JSF/Spring MVC etc.)
O filtro é chamado entre todas as solicitações, o Struts não sabe que o filtro existe, nem o filtro sabe do Struts… aí no filtro você deve redirecionar para o “.do” adequado.
Estude este artigo:
http://www.guj.com.br/article.show.logic?id=11
Abraço,
Visite o Blog do Perereca: http://www.blogdoperereca.blogspot.com
[/quote]
Olá rodrigo, bom dia.
Estou com uma dúvida na implementação de sistema de login com validação usando filter. Estou usando o eclipse, hibernate e o banco em postgresql. Eu quero que o usuario só tenha acesso as jsp’s através da tela de login, ou seja, depois que estiver autenticado. Mas infelizmente, se ele acessar atraves da Url, ele consegue iniciar uma session.
Tem idéia de como eu posso evitar isso??
Segue minha classe hibernate e minha classe loginhandler.
Agradeço pela colaboração.
HibernateSessionFilter
[code]package br.gov.rr.setrabes.util;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class HibernateSessionFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain fc)
throws IOException, ServletException {
HibernateUtil.openSession();
try {
HibernateUtil.currentSession().beginTransaction();
fc.doFilter(req, res);
HibernateUtil.currentSession().getTransaction().commit();
} catch (Exception e) {
throw new ServletException(e);
} finally {
HibernateUtil.closeCurrentSession();
}
}
public void init(FilterConfig c) {
}
public void destroy() {
}
} [/code]
A classe LoginHandler:
[code]package br.gov.rr.setrabes.handler;
import java.util.List;
import org.hibernate.Session;
import br.gov.rr.setrabes.dao.Dao;
import br.gov.rr.setrabes.dao.LoginDAO;
import br.gov.rr.setrabes.estrutura.Login;
import br.gov.rr.setrabes.estrutura.Usuario;
import br.gov.rr.setrabes.util.HibernateUtil;
public class LoginHandler {
private LoginDAO loginDAO = new LoginDAO();
/** Creates a new instance of ControleLogin */
public LoginHandler() {
}
private Login LO = new Login();
//
public Login getLO() {
return LO;
}
public void setLO(Login LO) {
this.LO = LO;
}
public String login() {
System.out.println("login= " + LO.getLogin());
System.out.println("senha= " + LO.getSenha());
// //poe booleano na sessao
// HttpSession session = session.setAttribute();
boolean ok = loginDAO.Login(LO.getLogin(), LO.getSenha(), "1");
if (ok == true) {
System.out.println("USUARIO LOGADO COM SUCESSO");
return "ok";
}
boolean admin = loginDAO.Login(LO.getLogin(), LO.getSenha(), "2");
if (admin == true) {
System.out.println("ADMIN LOGADO COM SUCESSO");
return "admin";
} else
System.out.println("USUARIO/SENHA INVALIDO");
return "erro";
}
public List<Usuario> getUsuarios() {
System.out.println("carregando usuarios ...");
Session session = HibernateUtil.currentSession();
Dao<Usuario> dao = new Dao<Usuario>(session, Usuario.class);
return dao.list();
}
}[/code]