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.
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
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.
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;}}