Boas pessoal, tudo bem com vocês?
Criei um PhaseListener e preciso que o mesmo "bloqueie" apenas paginas de um diretorio específico.
Tenho dentro da raiz de paginas de meu projeto (PASTA WEB) a tela de login e cadastro, dentro desta mesma raiz tenho uma pasta privada, que deve
ser protegida com o PhaseListener.
O codigo que tenho nao me permite acessar a pagina cadastro, ele sempre me redireciona para a pagina de login.
Como posso alterar ou o que devo fazer para que seja protegida somente a pasta privada?
<?xml version='1.0' encoding='UTF-8'?>
<!-- =========== FULL CONFIGURATION FILE ================================== -->
<faces-config version="2.1"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd">
<navigation-rule>
<from-view-id>/Pages/*</from-view-id>
<navigation-case>
<from-outcome>loginPage</from-outcome>
<to-view-id>/login.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<lifecycle>
<phase-listener>Filter.AuthorizationListener</phase-listener>
</lifecycle>
</faces-config>
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Filter;
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 {
@Override
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("usuarioLogado");
if (!isLoginPage && currentUser == null) {
NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
nh.handleNavigation(facesContext, null, "login.xhtml");
}
}
/**
*
* @param event
*/
@Override
public void beforePhase(PhaseEvent event) {
}
@Override
public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}
}