Bom galera, fiz a área administrativa do sistema mas está com um problema. Depois que eu me logo no sistema ele não me deixa
navegar pelas páginas que necessitam de usuário/senha, tipo assim, me logo no sistema e então vou para a página de cadastro de produto
mas então se a partir daí eu quero ir para a página de cadastro de usuário o sistema pede para eu me logar novamente, então como eu resolvo isso ??
Fiz isso através do PhaseListener, abaixo minhas classes.
AuthorizationListener.
[code]
package utils;
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;
import model.Usuario;
/**
*
-
@author Egon Henrique
*/
public class AuthorizationListener implements PhaseListener {private static final long serialVersionUID = 1L;
@Override
public void afterPhase(PhaseEvent event) {
//dquirindo FacesContext
FacesContext facesContext = event.getFacesContext();
//Armazenando página que fez requisição
String currentPage = facesContext.getViewRoot().getViewId();
//Verifica se é página de login
boolean isLoginPage = (currentPage.lastIndexOf(“index.xhtml”) > -1) ||
(currentPage.lastIndexOf(“contato.xhtml”) > -1) || (currentPage.lastIndexOf(“queijos.xhtml”) > -1);
//Adquirindo a sessão(é a mesma onde deverá guardar o usuário no nível de sessão
//com o descritor currentUser
HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(true);
//Recuperando valor da sessão
Usuario user = (Usuario) session.getAttribute(“currentUser”);
//Se não ta logado, redireciona para lógica que(navigation rule) atende a loginPage
if(!isLoginPage && user == null) {
NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
nh.handleNavigation(facesContext, null, “loginPage”);
}
}//}
@Override
public void beforePhase(PhaseEvent event) {}
@Override
public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}
}[/code]
usuarioController.
[code]
package controller;
import DAO.UsuarioDAO;
import javax.faces.component.UIData;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import model.Usuario;
/**
*
-
@author Egon Henrique
*/
public class UsuarioController {private Usuario usuario;
private String senha;
private String login;
private Usuario usuarios;
private UIData tabela;
private UsuarioDAO usuarioDAO;public UIData getTabela() {
return tabela;
}public void setTabela(UIData tabela) {
this.tabela = tabela;
}public Usuario getUsuarios() {
return usuarios;
}public void setUsuarios(Usuario usuarios) {
this.usuarios = usuarios;
}public String getLogin() {
return login;
}public void setLogin(String login) {
this.login = login;
}public String getSenha() {
return senha;
}public void setSenha(String senha) {
this.senha = senha;
}public Usuario getUsuario() {
return usuario;
}public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}public UsuarioController() {
usuario = new Usuario();
preencherTabela();
}public String Salvar() throws Exception {
usuarioDAO = new UsuarioDAO();
//this.produto.setFoto(foto);
usuarioDAO.inserir(usuario);
usuario = new Usuario();
preencherTabela();
return null;
}public void preencherTabela() {
usuarioDAO = new UsuarioDAO();
usuarios = usuarioDAO.getUsuario();
}public void excluir(Usuario usuario) {
usuario = (Usuario) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get(tabela.getVar());
usuarioDAO = new UsuarioDAO();
usuarioDAO.delete(usuario);
preencherTabela();
}public String doLogin() {
FacesContext fc = FacesContext.getCurrentInstance(); HttpSession session = (HttpSession) fc.getExternalContext().getSession(false); usuarioDAO = new UsuarioDAO(); usuario = usuarioDAO.getUsuario(); if(login.equalsIgnoreCase(usuario.getLogin()) && senha.equalsIgnoreCase(usuario.getSenha())) { usuario = new Usuario(); usuario.setLogin(login); usuario.setSenha(senha); session.setAttribute("usuario", usuario); login = null; senha = null; return "cadastroProduto.xhtml"; } else { return "login.xhtml"; }
}[/code]
Faces-Config.
[code]
page/cadastroProduto.xhtml
loginPage
page/login.xhtml
<navigation-rule>
<from-view-id>page/cadastroOvelha.xhtml</from-view-id>
<navigation-case>
<from-outcome>loginPage</from-outcome>
<to-view-id>page/login.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>page/cadastroUsuario.xhtml</from-view-id>
<navigation-case>
<from-outcome>loginPage</from-outcome>
<to-view-id>page/login.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<lifecycle>
<phase-listener>utils.AuthorizationListener</phase-listener>
</lifecycle>
[/code]