DÚVIDA Session, Filter, Login

4 respostas
denirroberto

Boa tarde pessoa, alguém tem algum exemplo bem completo com Session, Filter e Login para JSF 2.0 desde o HTML até os código?

4 Respostas

guivirtuoso

Digitei no google:

“Session, Filter e Login para JSF 2.0” (retirei do seu post)

Primeiro Resultado:
http://www.guj.com.br/java/239796-controlar-sessao-com-filter-jsf-20

Segundo Resultado:
Este post!

Terceiro Resultado:
http://stackoverflow.com/questions/5815649/how-to-implement-redirect-to-login-page-with-java-ee-6-glassfish

:shock:

denirroberto

Então gui, o problema do filter eu resolvi, o problema é que não consigo montar a classe que loga e joga na sessão e para logout.

luxu

o meu managedBean loginBean.java, bem básico pq ainda vou migrar pro Spring:

public String verificarLogin() {
		InterfaceDAO<Usuario> usuDAO = new HibernateDAO<Usuario>(Usuario.class,FacesContextUtil.getRequestSession());
		Usuario usuAux = new Usuario();
		usuAux.setLogin(usuario.getLogin());
		List<Usuario> listaUsuarios = usuDAO.getBeansByExample(usuAux);
		if (listaUsuarios != null && listaUsuarios.size() > 0) {
			usuAux = listaUsuarios.get(0);
			if (usuario.getSenha() != null && usuario.getSenha().equals(usuAux.getSenha())) {
				autenticado = true;
				usuario = usuAux;
				return "/formularios/principal";
			}
		}
		FacesMessage m;
		FacesContext c = FacesContext.getCurrentInstance();
		if (listaUsuarios == null || listaUsuarios.size() <= 0)
			 m = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro","Usuario: " + usuAux.getLogin() + " não existe");
		else m = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro","Senha errada!!");
		c.addMessage(null, m);
		return null;
	}

	public String efetuaLogoff() {
		limpar();
		return "/formularios/index";
	}
denirroberto

Ai pessoal, uma solução bem básica usando Filter, Session, login em JSF 2.0, JDK1.6 no NetBeans:
Galera, desculpe não ter comentado o código mas não está difícil de entender, a idéia é essa se alguém tiver um código melhor pra propor será uma boa. Abraços.

model Usuario
public class Usuario {

private String funcionarioNome = "Denir Roberto Tavares";
private String matricula;
private String senha;

public String getSenha() {
    return senha;
}

public void setSenha(String senha) {
    this.senha = senha;
}

public String getFuncionarioNome() {
    return funcionarioNome;
}

public void setFuncionarioNome(String funcionarioNome) {
    this.funcionarioNome = funcionarioNome;
}

public String getMatricula() {
    return matricula;
}

public void setMatricula(String matricula) {
    this.matricula = matricula;
}

FiltroSeguranca
@WebFilter(filterName = “filtroSeguranca”, urlPatterns = “/index.jsf”)//ao invés de index é so trocar pela pasta “admin/*” tudo o que estiver dentro de admin será impedido de acessar a não ser que seja autenticado.
public class FiltroSeguranca implements Filter {

@Override
public void init(FilterConfig filterConfig) throws ServletException {
    
}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest req = (HttpServletRequest) request;
    HttpSession session = req.getSession();

    if (session.getAttribute("usuario") != null || req.getRequestURI().endsWith("login.jsf")) {
        chain.doFilter(request, response);
    } else {
        HttpServletResponse res = (HttpServletResponse) response;
        res.sendRedirect("login.jsf");
    }
}

@Override
public void destroy() {
    
}

}

AutenticacaoBean
@ManagedBean
public class AutenticacaoBean extends HttpServlet {

private Usuario usuario = new Usuario();
private HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
private FacesContext context = FacesContext.getCurrentInstance();

public String login() {

    if (!usuario.getMatricula().equals("p654523") && !usuario.getSenha().equals("123456")) {
        context.addMessage(null, new FacesMessage("Matrícula e Senha Inválidos."));
        return "login.jsf";
    } if (!usuario.getSenha().equals("123456")) {
        context.addMessage(null, new FacesMessage("Senha Inválida."));
        return "login.jsf";
    } if (!usuario.getMatricula().equals("p654523")) {
        context.addMessage(null, new FacesMessage("Matrícula Inválido."));
        return "login.jsf";
    } else {
        session.setAttribute("usuario", usuario);
        return "index.jsf";
    }
}

public String logout() {
    session.removeAttribute("usuario");
    session.invalidate();
    return "login.jsf";
}

public Usuario getUsuario() {
    return usuario;
}

public void setUsuario(Usuario usuario) {
    this.usuario = usuario;
}
Criado 20 de setembro de 2011
Ultima resposta 24 de set. de 2011
Respostas 4
Participantes 3