Visualizzazione dei risultati da 1 a 4 su 4

Discussione: gestione sessioni JSP

  1. #1

    gestione sessioni JSP

    Salve a tutti,
    ho creato una piccola applicazione web in cui c'è un'autenticazione di tipo FORM. Se accedo a una pagina protetta vengo reindirizzato alla pagina di login.
    Una volta effettuato il login, per esempio accedendo alla pagina main.jsp, ho a disposizione il link di logout in cui chiamo request.getSession().invalidate() per eliminare la sessione creata in precedenza e stampo il nome dell'utente ha fatto il logout
    Però mi sono accorto che se richiamo dalla barra degli indirizzi la pagina main.jsp, mi fa comunque entrare nella pagina senza reindirizzarmi verso login.jsp, come se la sessione fosse ancora attiva. Ora però richiamando il link logout, come nome dell'utente mi da null.

    Si può eliminare questo inconveniente in qualche modo?
    Non ci sono Queen senza Freddie !

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Dovrei vedere un po' del codice che usi per la gestione delle sessioni, soprattutto il logout e la parte che si occupa del redirect verso la pagina di login

  3. #3
    Questa è la pagina di logout:

    codice:
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <html>
        <head><link rel="stylesheet" type="text/css" href="css\struts.css"></head>
        <body>
        <jsp:include page="./include/header.jsp" flush="true" />
        
        <div id="content">
            <h3>L'utente '<%=request.getRemoteUser()%>' si &egrave; disconnesso.</h3>
            <% request.getSession().invalidate(); %
            
    
    
            Clicca qui per tornare alla pagina iniziale.
        </div>
        <jsp:include page="./include/footer.jsp" flush="true" />
        </body>
    </html>

    Ora, nella pagina index.jsp ho aggiunto queste direttive HTTP:

    codice:
    response.setHeader("Cache-Control", "no-cache");    
    response.setHeader("Pragma", "no-cache");
    
    <html>
    ..........
    </html>
    In questo modo funziona, però vorrei capire un pò meglio il perché di tutto ciò, in quanto queste direttive le ho viste navigando in rete e ancora non mi è del tutto chiaro il loro significato.
    Non ci sono Queen senza Freddie !

  4. #4
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Le due direttive che hai specificato fanno la stessa cosa (una - mi pare "Pragma" - è usata per compatibilità con sistemi più vecchi) e scrivono una intestazione HTTP che dice al browser di non mantenere in cache la pagina ritornata (ma è il browser stesso, poi, che decide se aderire o meno a questa direttiva).
    Tutto è possibile, ma mi sembra strano che il tuo problema sia questo... anche perchè, se come dici hai inserito queste istruzioni solo nella pagina index.jsp, l'anomalia dovrebbe presentarsi in tutte le altre pagine "protette".
    Come gestisci l'esistenza della sessione, e quindi il redirect alla pagina di login se non la trovi già esistente?
    Ti suggerisco anche, per verificare se la pagina è stata prodotta ex-novo oppure è recuperata da qualche cache, di inserire delle System.out di test: naturalmente, nel secondo caso non le troverai stampate sullo standard output del server

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.