Login e Logout com JSF 2, JBoss AS 7 e MySQL

12 respostas
L

Boa tarde,

Estou iniciando com JSF 2 e gostaria de saber como implementar login e logout utilizando JBoss AS 7 e o MySQL. Alguem poderia me ajudar ou indicar um tutorial bom?

Desde ja obrigado!

Um abraco!

12 Respostas

lele_vader

Na apostila da k-19 tem isso eu acho.
Você poderia fazer um filter.

diogozero

Nesse link tem um exemplo completo inclusive usando JAAS para autenticação
http://uaihebert.com/?p=836

(Assinatura do Hebert sempre quebrando um galho hauhsuioasuahs)

fabiozanardi

você também pode implementar o phaselistener do jsf para autenticar

flw!

L

Valeu galera! =D

Eu ja li a apostila da K-19, gostei bastante, porem gostaria de implementar com JAAS. Vou dar uma no blog do uaiHebert entao :wink:

Outra coisa, como eu implementaria com o phaselistener? Provavelmente vou usar JAAS mesmo, mas gostaria de saber =D

Um abraco!

lele_vader

Você criaria um filtro antes de abrir cada página, verificaria se o cara está logado.
Depois verificaria permissão.
Se sim deixa ir, senão manda para inicial.

lele_vader

Lembrando que a configuração do jaas depende de servidor para servidor.

fabiozanardi

o phaselistener tem um exemplo bem básico nesse site:

http://semprejava.wordpress.com/2010/08/04/25/

e aqui:

http://hslife.com.br/2010/12/18/controle-de-acesso-com-phaselistener/

para um login básico ele funciona muito bem

L

Certo! Vou dar uma olhada.

Um abraco e muito obrigado pessoal!

fabiozanardi

eu tenho um projetinho antiho meu aqui de quando estudava jsf que implementei um phaselistener básico

se tiver dificuldades com isso comenta aqui que posso encontrar e postar um exemplo que sei que funciona

flw

L

Massa! =D

Pode postar entao :wink:

Mais uma vez obrigado!

fabiozanardi

O codigo fiz a muito tempo, com certeza deve dar para melhorar algumas coisas,

segue abaixo

phase:

package br.com.dpv.ui.listeners;

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 LoginPhaseListener implements PhaseListener {

	private static final long serialVersionUID = 1L;

	public void afterPhase(PhaseEvent event) {

		FacesContext facesContext = event.getFacesContext();
		String currentPage = facesContext.getViewRoot().getViewId();

		boolean isLoginPage = (currentPage.lastIndexOf("login.xhtml") > -1);
		HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(true);
		Object currentUser = session.getAttribute("usuario");

		if (!isLoginPage && currentUser == null) {
			NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
			nh.handleNavigation(facesContext, null, "login");
			//System.out.println("nao logado, pagina atual: " + currentPage);
		} else {
			//System.out.println("logado, pagina atual:" + currentPage);
		}
	}

	public void beforePhase(PhaseEvent event) {

	}

	public PhaseId getPhaseId() {
		return PhaseId.RESTORE_VIEW;
	}
}

loginMB :

package br.com.dpv.ui.view;

import java.io.Serializable;

import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.dpv.domain.services.vendedor.VendedorService;
import br.com.dpv.domain.vo.Vendedor;

@Named("loginMB")
@RequestScoped
public class LoginMB implements Serializable {

	private static final long serialVersionUID = -7417099367748111549L;

	private String usuario, 
				   senha;

	@Inject
	private VendedorService vendedorService;

	public String login() {
		String paginaDestino = null;
		FacesContext context = FacesContext.getCurrentInstance();

		try {
			Vendedor user = vendedorService.isUsuarioLogado(usuario, senha);

			if (user != null) {

				context.getExternalContext().getSessionMap().put("usuario", user);

				paginaDestino = "pedidos";
			} 
			else {
				FacesMessage msg = new FacesMessage("Login inv�lido!");
				msg.setSeverity(FacesMessage.SEVERITY_ERROR);
				context.addMessage(null, msg);
			}
		} 
		catch (Exception ex) {
			FacesMessage msg = new FacesMessage("Erro fatal: " + ex.getMessage());
			msg.setSeverity(FacesMessage.SEVERITY_FATAL);
			context.addMessage(null, msg);
			ex.printStackTrace();
		}

		return paginaDestino;
	}

	public String getUsuario() {
		return usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}
}

adicionar no faces-config.xml:

<lifecycle>
		<phase-listener>br.com.dpv.ui.listeners.LoginPhaseListener</phase-listener>
	</lifecycle>
L

Legal cara! Depois vou tentar implementar aqui =D

Criado 2 de outubro de 2012
Ultima resposta 3 de out. de 2012
Respostas 12
Participantes 4