Cómo redirigir a la página de índice si fuera tiempo de la sesión ocurrió en aplicación JSF

StackOverflow https://stackoverflow.com/questions/2543094

  •  23-09-2019
  •  | 
  •  

Pregunta

Estoy utilizando JSF RI 1.1. Cómo redirigir a la página de índice si fuera tiempo de la sesión pasa?

¿Fue útil?

Solución

Hay dos maneras que se pueden combinied:

  1. Hacer uso de la cabecera <meta> de refresco en el elemento <head> HTML en combinación con HttpSession#getMaxInactiveInterval() que devuelve el resto de la sesión segundos aún tiene que vivo.

    <meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval};url=index.jsf">
    

    Este enfoque se redirigirá automáticamente a la página de la url dado cuando caduque la sesión.

  2. Catch ViewExpiredException en web.xml:

    <error-page>
        <exception-type>javax.faces.application.ViewExpiredException</exception-type>
        <location>/index.jsf</location>
    </error-page>
    

    reenviará automáticamente la solicitud a la <location> dado cuando una solicitud POST se ha disparado (h:commandButton, h:commandLink, etc), mientras que la sesión ha caducado Este enfoque.

Tenga en cuenta que yo personalmente preferiría un intermedio "La sesión ha caducado", advirtiendo página o alerta para evitar "wtf?" experiencias y así mejorar la experiencia del usuario. Aún más, yo también prefiero disparar una encuesta ajaxical cada minuto cuando el cliente ha mostrado actividad mediante la escucha en click y keypress, de modo que toda la vida de la sesión se puede posponer más.

Otros consejos

Se puede utilizar un Filter para detectar la excepción particular, que indica el tiempo de espera, y la redirección desde allí.

JSF2:

<meta http-equiv="refresh" content="#{facesContext.externalContext.sessionMaxInactiveInterval};url=#{request.contextPath}/index.xhtml"/>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top