Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    52

    [VB.NET] Eliminare sessioni alla chiusura della pagina

    Ciao a tutti .

    Normalmente negli applicativi web VB.NET (ma penso più o meno in tutti) i dati in sessione si cancellano nel momento in cui viene chiuso il browser.

    Se però in precedenza (prima della chiusura) ho aperto un'altra finestra dello stesso browser, la sessione rimane attiva e quindi se incollo l'indirizzo dell'applicativo questo mi mostra l'area riservata senza mandarmi alla pagina di login.

    Per memorizzare le sessioni utilizzo il seguente codice:
    codice:
    Session("utente") = strUser
    Questo comportamento non è poi così strano visto che ho testato con alcuni webmail gratuiti e il risultato è lo stesso.

    E' possibile fare in modo che, attraverso un evento o una configurazione, alla chiusura della finestra corrente la sessione si cancelli?

    Grazie 1000
    Luca
    ******************************

    Attenti al cane....

    è fuggito!

    ******************************

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Guarda qui:

    http://www.techrepublic.com/article/...x-file/5771721


    PROVA ad usare l'evento Session_End ed a svuotarla con Session.Abandon();
    Ma non sono mai stato sicuro dell'affidabilità del suddetto evento, a dire il vero

  3. #3
    ciao,
    le applicazioni web hanno un timeout per le sessioni.
    Questo timeout è considerato per inattività nella sessione, ovvero se un utente non clicca/naviga per un tot di minuti.
    A meno che non ci sia del codice specifico, quando si chiude il browser, la sessione rimane "accesa" per questi tot di minuti.

    La configurazione predefinita per la memorizzazione delle sessioni è tramite cookie, ovvero viene memorizzata la SessionID su un cookie del client. Ecco perché se chiudi e riapri subito la stessa pagina, non hai perso la sessione (ripeto, eccetto codice specifico).

    Se non ricordo male il valore di default per il timeout è 20 minuti.
    L'evento Session_End, avviene quindi alla fine di questi 20 minuti, e non alla chiusura del browser.

    Puoi agire in 2 modi:
    il primo modo prevede di disabilitare la memorizzazione sul cookie, questo comporta l'inserimento della SessionID in querystring (occhio alla sicurezza)
    il secondo modo sarebbe di implementare del codice che chiuda la sessione quando viene chiuso il browser.

    1: http://www.dailycoding.com/Posts/imp...on_aspnet.aspx
    2: http://weblogs.asp.net/kodali/archiv...ser-close.aspx

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    La cosa mi ha sempre confuso.
    Quale evento è designato alla fine di una sessione utente ?

  5. #5
    l'evento è Session_End, giusto, il problema è che non avviene quando si chiude una finestra del browser, ma quando scade il timeout, o quando viene esplicitamente chiusa una sessione, o quando avviene il refresh dell'applicazione (refresh del pool, modifica del web.config, modifica del global.asax)

    quindi, seguendo il codice del metodo 2 che ho postato, riesci a:
    1: sfruttare un evento del browser in chiusura di finestra
    2: richiamare un metodo sul server per chiudere la sessione
    3: usare il Session_End per gestire ulteriormente l'evento

    Come vedi il Session_End è l'ultimo.

    ciao

  6. #6

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.