Estava implementando um login e fui usar a autenticação do tipo FORM.
Estou usando JSF2 + facelets e não consigo achar nenhum exemplo de como fazer um form com a tag <h:from> e as outras tags JSF, tive que infelizmente colocar <f:verbatin> e por html dentro funciona mais queria ter que escrever html na mão, alguém sabe como fazer o formulário só utilizando as tags do JSF
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"><h:head><title>Login</title></h:head><h:body><f:verbatim><formmethod="post"action="#{request.contextPath}/j_security_check"><labelfor="username">Userid</label><inputtype="text"id="username"name="j_username"/><labelfor="password">Password</label><inputtype="password"id="password"name="j_password"/><inputtype="submit"value="Login"/></form></f:verbatim></h:body></html>
Isso ñ é possível. O máximo q vc pode fazer é um componente JSF custom p/ construir a form de login p/ vc.
D
Diabo_Loiro
auhauha alguém mais concorda que deveria existir um componente que suportasse esse recurso, estranho ultimamente estou vendo varias lacunas não preenchidas.
so por curiosidade sabe o motivo de não ser possível?
Obrigado novamente brother
D
dev.rafael
Os componentes do JSF usam binding dos seus valores com propriedade de algum ManagedBean. No caso do form de login do JAAS vc ñ tem o ManagedBean responsável pelo login e por isso vc usar parametros nomeados j_username e j_password. O mesmo vale p/ a action q é definida pela url j_security_check enquanto uma action do JSF é uma expressão q aponta p/ um método de um ManagedBean.
Vc pode usar o JSF p/ fácilitar a criação e customização da form de login, msm pq as vezes vc ñ quer ou simplesmente ñ pode usar JAAS. O JSF 2 torna isso muito fácil através de Composite Componentes.
D
Diabo_Loiro
Entedi estava lendo hoje sobre os composite components vlw novamente.
M
mrbbm
Meu login é igual ao do Diabo Loiro!
Só estou tendo problemas com meu web.xml, aqui:
packagecom.mb;importjavax.annotation.PostConstruct;importjavax.ejb.EJB;importjavax.faces.application.FacesMessage;importjavax.faces.bean.ManagedBean;importjavax.faces.bean.SessionScoped;importjavax.faces.context.ExternalContext;importjavax.faces.context.FacesContext;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;//import javax.security.auth.login.FailedLoginException;importcom.facade.UserFacade;importcom.model.User;@SessionScoped@ManagedBeanpublicclassUserMB{privateUseruser;@EJBprivateUserFacadeuserFacade;privatestaticfinalStringINDEX="index";privatestaticfinalStringSTAY_IN_THE_SAME_PAGE=null;@PostConstructpublicvoidinit(){user=newUser();}publicUsergetUser(){if(user==null||user.getEmail()==null){ExternalContextcontext=FacesContext.getCurrentInstance().getExternalContext();if(context.getUserPrincipal()!=null){StringuserEmail=context.getUserPrincipal().getName();user=userFacade.findUserByEmail(userEmail);}}returnuser;}publicvoidsetUser(Userusuario){this.user=usuario;}publicbooleanisUserAdmin(){returngetRequest().isUserInRole("ADMIN");}publicbooleanisUserLoggedIn(){if(getContext().getExternalContext().getUserPrincipal()!=null)returntrue;returnfalse;}publicStringlogOut(){//getRequest().getSession().invalidate();try{getRequest().logout();}catch(ServletExceptione){// TODO Auto-generated catch blocke.printStackTrace();}user=newUser();return"logout";}privateHttpServletRequestgetRequest(){return(HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();}publicStringlogin(){try{if(getContext().getExternalContext().getUserPrincipal()==null)getRequest().login(user.getEmail(),user.getPassword());returnINDEX;}catch(ServletExceptione){sendErrorMessageToUser("login","Não foi possível se logar.","Verifique seu usuário e senha.");returnSTAY_IN_THE_SAME_PAGE;}}privatevoidsendInfoMessageToUser(Stringtitle,Stringmessage){FacesContextcontext=getContext();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,title,message));}privatevoidsendInfoMessageToUser(StringmessageBox,Stringtitle,Stringmessage){FacesContextcontext=getContext();context.addMessage(messageBox,newFacesMessage(FacesMessage.SEVERITY_INFO,title,message));}privatevoidsendErrorMessageToUser(Stringtitle,Stringmessage){FacesContextcontext=getContext();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_ERROR,title,message));}privatevoidsendErrorMessageToUser(StringmessageBox,Stringtitle,Stringmessage){FacesContextcontext=getContext();context.addMessage(messageBox,newFacesMessage(FacesMessage.SEVERITY_ERROR,title,message));}privateFacesContextgetContext(){FacesContextcontext=FacesContext.getCurrentInstance();returncontext;}}