2012-06-12 10 views
5

¿Hay alguna forma en JSF que se pueda utilizar para averiguar si un usuario llegó a una página por la regla de navegación de la JSF o el usuario ha escrito la URL directamente para llegar a esa página?Cómo detectar si el usuario ha alcanzado una página mediante la redirección de la regla de navegación JSF o escribiendo la URL?

Actully Quiero evitar que el usuario vaya a una página directamente tecleando la URL para eso directamente en el navegador, en lugar de eso, quiero restringir al usuario a usar la barra de navegación de la aplicación para ir a una página.

Respuesta

5

Hay a modo: compruebe la presencia del encabezado referer (sí, con el error de ortografía).

if (externalContext.getRequestHeader("referer") == null) { 
    // User has most likely accessed the page by directly typing the URL. 
} 

o

<h:panelGroup rendered="#{empty header['referer']}"> 
    <!-- User has most likely accessed the page by directly typing the URL. --> 
</h:panelGroup> 

Este será sin embargo un error para los usuarios que han utilizado cuidadosamente el enlace en su página web, pero están utilizando algún software de proxy/firewall/seguridad de exceso de celo que oculta la cabecera referer por completo.

Es posible que desee considerar la posibilidad de hacer que la página no directamente a disposición de los usuarios mediante la colocación en /WEB-INF carpeta y que sirva como un condicional incluyen que es ejecutado por una petición POST (si es necesario con el Ajax). P.ej.

<h:form> 
    <h:commandLink action="#{bean.showPage}" /> 
</h:form> 

<h:panelGroup rendered="#{bean.showPage}"> 
    <ui:include src="/WEB-INF/includes/foo.xhtml" /> 
</h:panelGroup> 
+0

Tan simple y efectivo, muchas gracias hombre. – user1220373

+0

De nada. – BalusC

Cuestiones relacionadas