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!
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!
Na apostila da k-19 tem isso eu acho.
Você poderia fazer um filter.
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)
você também pode implementar o phaselistener do jsf para autenticar
flw!
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 
Outra coisa, como eu implementaria com o phaselistener? Provavelmente vou usar JAAS mesmo, mas gostaria de saber =D
Um abraco!
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.
Lembrando que a configuração do jaas depende de servidor para servidor.
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
Certo! Vou dar uma olhada.
Um abraco e muito obrigado pessoal!
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
Massa! =D
Pode postar entao 
Mais uma vez obrigado!
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>
Legal cara! Depois vou tentar implementar aqui =D