Impedire la login quando l’utente è autenticato

di il
4 risposte

Impedire la login quando l’utente è autenticato

Ho una pagina jsp dinamica (index.jsp) che uso per la login. Vorrei che quando l’utente sia loggato non veda più il form per l’inserimento delle credenziali nel caso per sbaglio o intenzionalmente ritorni nella home del sito. Per fare ciò ho inserito un semplice ciclo if che funziona ma non alla perfezione:

<% if (request.getSession().getAttribute("UserID")==null){ %>
    <form action="/autenticazione.jsp" method="POST">…</form>
<% } else {%>
    <p>Benvenuto <%= request.getSession().getAttribute("UserID") %>!</p>
<% } %>
Infatti dopo che l’utente si è loggato se clicca sul tasto indietro del browser torna alla index.jsp ma vede il form. A questo punto se faccio un refresh in index.jsp il <form> si sostituisce con il <p> ma questo non è bello da vedersi. Come posso fare per ovviare a questo inconveniente?
Vorrei usare java se possibile, non html o js.
Grazie

4 Risposte

  • Re: Impedire la login quando l’utente è autenticato

    giannino1995 ha scritto:


    Infatti dopo che l’utente si è loggato se clicca sul tasto indietro del browser torna alla index.jsp ma vede il form.
    Quando si chiede quella pagina per la prima volta (prima del login), il browser la riceve E se la tiene in cache. Dopo che hai fatto il login, se clicchi sul "back" button del browser, il browser riprende la pagina precedente dalla cache, senza fare una nuova request al server. Quindi è proprio come se non ci fosse stato alcun login.

    Quindi lato Java è sufficiente fare in modo che la pagina di login sia fornita al client/browser indicando di NON tenerla in cache. Basta impostare nella response i giusti header che secondo lo standard HTTP impediscono ad un client di cachare la response.

    Cerca in rete come disabilitare il caching a livello HTTP.
  • Re: Impedire la login quando l’utente è autenticato

    andbin ha scritto:


    giannino1995 ha scritto:


    Infatti dopo che l’utente si è loggato se clicca sul tasto indietro del browser torna alla index.jsp ma vede il form.
    Quando si chiede quella pagina per la prima volta (prima del login), il browser la riceve E se la tiene in cache. Dopo che hai fatto il login, se clicchi sul "back" button del browser, il browser riprende la pagina precedente dalla cache, senza fare una nuova request al server. Quindi è proprio come se non ci fosse stato alcun login.

    Quindi lato Java è sufficiente fare in modo che la pagina di login sia fornita al client/browser indicando di NON tenerla in cache. Basta impostare nella response i giusti header che secondo lo standard HTTP impediscono ad un client di cachare la response.

    Cerca in rete come disabilitare il caching a livello HTTP.
    Ho già provato a fare come dici ma non funziona, anzi è una delle prime cose che ho provato a fare.
    Ho provato questo codice:
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    ma non noto cambiamenti ed inoltre non risulta validabile. Io uso HTML5.
    Ho anche provato con un manifest:
    CACHE MANIFEST
    # Cache manifest version 1.0
    # no cache
    NETWORK:
    *
    ma impedisce la visualizzazione del messaggio di errore quando serve, quindi ancora peggio.
    Sei sicuro andbin che non ci siano specifiche lato java che impediscano al browser di usare la cache come ad esempio quelle che si usano per settare l’UTF-8?
  • Re: Impedire la login quando l’utente è autenticato

    --> https://stackoverflow.com/questions/49547/how-to-control-web-page-caching-across-all-browsers
  • Re: Impedire la login quando l’utente è autenticato

    Andbin sta a java come Cristiano Ronaldo al calcio!

    https://www.youtube.com/watch?v=_kL0xSzUMc
Devi accedere o registrarti per scrivere nel forum
4 risposte