Vous êtes sur la page 1sur 5

A arte de desenvolver, entender e manter sistemas: Login - autenticao e autorizao ...

Page 1 of 5

Login - autenticao e autorizao usando JavaServer Faces (jsf)


Este post trar (ou tentar trazer) informaes bsicas para o desenvolvimento de um sistema de login para aplicaes web javaserver faces (jsf) . Com estas informaes creio que ser possvel pra voc implementar seu sistema de Login. Basicamente... O Usuario tem um nomeDeUsuario uma senha e um ou mais Perfis. Cada Perfil est vinculado a uma ou mais pginas. (ou recursos ou qualquer nomenclatura que voc quiser usar) Uma Pgina um objeto simples que tem uma descrio. Na tentativa de resumir a estrutura seria algo semelhante a essa pseudomodelagem... Pagina paginaAdmin = new Pagina("/admin.jsf"); Pagina paginaNormal= new Pagina("/principal.jsf"); Perfil admin = new Perfil(); admin.temAcesso(paginaAdmin).temAcesso(paginaNormal); Perfil normal = new Perfil(); normal.temAcesso(paginaNormal); Usuario homerSimpsons = new Usuario("homer99","senha"); homerSimpsons.temPerfilDe(admin); Crie um PhaseListener como abaixo. package meu.pacote.br; import javax.faces.application.NavigationHandler; import javax.faces.context.FacesContext; import javax.faces.event.PhaseEvent; import javax.faces.event.PhaseId; import javax.faces.event.PhaseListener; import javax.servlet.http.HttpSession; public class AuthorizationListener implements PhaseListener { public void afterPhase(PhaseEvent event) { FacesContext facesContext = event.getFacesContext(); //adiquirindo o FacesContext. String currentPage = facesContext.getViewRoot().getViewId(); //armazenando a pgina que fez a requisio. (a string da pg. atual ex: "/pag.jsf") boolean isLoginPage = (currentPage.lastIndexOf("login.xhtml") > -1); //fazendo a verificao mais bsica de todas... se a pgina de login. HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(true); //adquirindo a sesso (essa mesma onde voc dever guardar seu usurio no nvel de sesso com descritor currentUser). Usuario user = (Usuario) session.getAttribute("currentUser"); //apenas recuperando o valor da sesso. if (!isLoginPage && user == null) { NavigationHandler nh = facesContext.getApplication ().getNavigationHandler(); nh.handleNavigation(facesContext, null, "loginPage"); //bem, se no est logado redireciona pra lgica que (navigatio rule) atende a loginPage } else { //verificar se o usuario atual tem acesso a pgina atual.

http://archsofty.blogspot.com.br/2008/11/login-autenticao-e-autorizao-usando.html

27/08/2012

A arte de desenvolver, entender e manter sistemas: Login - autenticao e autorizao ... Page 2 of 5

boolean temAcesso = user.temAcesso(new Pagina (currentPage)); if (!temAcesso){ //aqui a logica de no ter acesso... redicione novamente? faa algo... ??? } } //caso contrrio o jsf passa tranquilamente por aqui!!! } public void beforePhase(PhaseEvent event) { //poderia ter sido escrito nesse evento antes da "fase" (lembra do bsico do jsf, o ciclo de vida e as fases... } public PhaseId getPhaseId() { return PhaseId.RESTORE_VIEW; } } E uma lgica pra logar o usurio na sesso... FacesContext.getCurrentInstance().getExternalContext ().getSessionMap().put("currentUser", user); E registre essa classe no arquivo faces-config.xml. Claro, registre tambm um navigation que atenda a qualquer chamada para loginPage. <lifecycle> <phase-listener> org.gpro.filter.AuthorizationListener </phase-listener> </lifecycle> <navigation-rule> <from-view-id>/*</from-view-id> <navigation-case> <from-outcome>loginPage</from-outcome> <to-view-id>/login.xhtml</to-view-id> <redirect/> </navigation-case> </navigation-rule> Claro que o cdigo pode e deve ser modificado para questes de flexibilidade, legibilidade e at mesmo performance. O propsito inicial era mostrar como desenvolver um sistema de login com jsf. O cdigo mostrado foi feito apenas pra exemplificar qualquer erro ou dvida postem aqui. Mais informaes em: http://java.

http://archsofty.blogspot.com.br/2008/11/login-autenticao-e-autorizao-usando.html

27/08/2012

A arte de desenvolver, entender e manter sistemas: Login - autenticao e autorizao ... Page 3 of 5

http://archsofty.blogspot.com.br/2008/11/login-autenticao-e-autorizao-usando.html

27/08/2012

A arte de desenvolver, entender e manter sistemas: Login - autenticao e autorizao ... Page 4 of 5

http://archsofty.blogspot.com.br/2008/11/login-autenticao-e-autorizao-usando.html

27/08/2012

A arte de desenvolver, entender e manter sistemas: Login - autenticao e autorizao ... Page 5 of 5

http://archsofty.blogspot.com.br/2008/11/login-autenticao-e-autorizao-usando.html

27/08/2012

Vous aimerez peut-être aussi