Boa tarde, estou desenvolvendo um site com JSF, primefaces, estou com dúvidas a questão do login, como validar que um usuário fez o login e como o manter logado até que ele feche o navegador? Isso é gerenciado pelo Servlet? Estou usando o tomcat, terei que usar um servidor de aplicação como JBoss por exemplo? Estou meio perdido nessa parte.
Outra dúvida é, queria mudar o conteúdo da página sem mudar de página, preciso utilizar AJAX ou algo do tipo?
Como validar que um usuário fez o login e como o manter logado até que ele feche o navegador?
De forma simples voce pode fazer um ManagedBean que recebe o usuario e senha e se o login for bem sucedido voce seta na HttpSession uma propriedade tipo logado = true ja que voce quer que dure até quando ele feche o browser.
// logando o usuario// /login.htmlif("root".equals(user)&&"123".equals(password)){HttpSessionsession=getSession();session.setAttribute("logado","1");}privatestaticHttpSessiongetSession(){FacesContextfacesContext=FacesContext.getCurrentInstance();return(HttpSession)facesContext.getExternalContext().getSession(false);}@WebFilter("/area-logada/*")publicclassVerificadorLoginFilterimplementsFilter{@Overridepublicvoidinit(FilterConfigfilterConfig)throwsServletException{}@OverridepublicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{HttpServletRequestreq=(HttpServletRequest)request;HttpServletResponseres=(HttpServletResponse)response;HttpSessionsession=req.getSession(false);if(!"1".equals(session.getAttribute("logado"))){((HttpServletResponse)response).sendRedirect("/login.html");}}@Overridepublicvoiddestroy(){}}
Usando frameworks voce pode usar o Spring Security por exemplo.
Queria mudar o conteúdo da página sem mudar de página, preciso utilizar AJAX ou algo do tipo?
Usando JSF não porque a ideia dele é ser asincrono mesmo, tudo que voce fizer com JSF vai sempre usar o AJAX e nunca vai recarregar a pagina.