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?
DÚVIDA Session, Filter, Login
4 Respostas
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:
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.
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";
}
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;
}