Come reindirizzare alla pagina di indice se il tempo della sessione out avvenuto in applicazione JSF

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

  •  23-09-2019
  •  | 
  •  

Domanda

Sto usando JSF RI 1.1. Come reindirizzare alla pagina di indice se il tempo della sessione succede fuori?

È stato utile?

Soluzione

Ci sono due modi che possono essere combinied:

  1. Sfruttate l'intestazione di aggiornamento <meta> nell'elemento <head> HTML in combinazione con HttpSession#getMaxInactiveInterval() che restituisce il resto di secondi della sessione deve ancora vivere.

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

    Questo approccio reindirizzerà automaticamente la pagina alla data url quando la sessione scade.

  2. ViewExpiredException in web.xml:

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

    Questo approccio inoltrerà automaticamente la richiesta al data <location> quando una richiesta POST è stato licenziato (h:commandButton, h:commandLink, ecc) mentre la sessione è scaduta.

Si noti che io personalmente preferirei un intermedio "Sessione scaduta" pagina di avviso o di allarme per evitare di "WTF?" esperienze e quindi migliorare l'esperienza dell'utente. Ancor più, avrei così preferiscono sparare un sondaggio ajaxical ogni minuto quando il cliente ha mostrato attività ascoltando il click e keypress, in modo che la vita della sessione può essere rimandata di più.

Altri suggerimenti

È possibile utilizzare un Filter per catturare il particolare eccezione che indica il timeout, e reindirizzare da lì.

JSF2:

<meta http-equiv="refresh" content="#{facesContext.externalContext.sessionMaxInactiveInterval};url=#{request.contextPath}/index.xhtml"/>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top