Session su File con ASP.NET: FileSession

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Come funziona il tutto

Come già detto, il FileSession viene gestito da un modulo. L'elaborazione di ogni singola pagina in ASP.NET è frutto dell'elaborazione di moduli, che ad esempio gestiscono l'autenticazione, le autorizzazioni, la gestione della cache, il controllo di errori. La loro potenza sta nel fatto di poter controllare la richiesta di ogni singola pagina sia nella fase iniziale che in quella finale.

public class myHttpModule:IHttpModule
{
     public void Init(HttpApplication app)
     {
         app.BeginRequest+=new EventHandler(PersonalRequest.StartRequest);
         app.EndRequest+=new EventHandler(PersonalRequest.EndRequest);
     }
     public void Dispose() {}
}

La funzione "StartRequest" presente nella classe "PersonalRequest" sarà eseguita all'inizio della richiesta di pagina, e "EndRequest" alla fine dell'elaborazione della pagina:

Immagine

Vediamo nel dettaglio le operazioni eseguite da queste due funzioni per lo svolgimento di tutte le operazioni necessarie al corretto funzionamento del modulo.

Personal.StartRequest

Inizialmente la richieste viene processata da " StartRequest " che verifica se è presente il nostro "sid" e il relativo valore tra i pametri GET della pagina. Se non è presente significa che la pagina è la prima visitata dall'utente, e viene creato un nuovo identificativo di sessione grazie alla funzione:

sid=Guid.NewGuid().ToString()

Guid.NewGuid() restituisce una stringa alfanumerica univoca a 128 bit (2^128 = 3,40e+38), garantendoci dunque un buon margine di sicurezza.

Se l'identificativo di sessione è presente come parametro, viene inizialmente verificato che esista come file nella directory predefinita per questi file (directory selezionata nel web.config come prima visto). Se non presente, viene creato un nuovo identificativo di sessione come sopra, altrimenti viene letto il suo contenuto e inserito nella classe _filesession, che è la classe in cui vengono memorizzate tutte le informazioni sull'utente come il suo nome, la role a cui appartiene, se è stato autenticato, e i relativi dati di sessione. Il contenuto di questa classe viene "agganciato" alla richiesta attuale in modo da poter essere gestita da qualsiasi evento della richiesta:

HttpContext.Current.Items["FileSession"]=fs;

L'esecuzione della pagina

Successivamente viene elaborato il codice della pagina ASP.NET.

Nella dll inclusa nella cartella \bin\, oltre al modulo, alla classe per la lettura della sezione personalizzata del web.config, è presente una classe, di nome "FS", con funzioni statiche per accedere a questo nuovo oggetto.

Funzione

Esempio

FS.Visitatori : resituisce il numero di utenti presenti nel sito

dim utenti as integre=FS.Visitatori
FS.Write: scrive un oggetto nel FileSession. Esempio:
FS.Write("nome","Andrea")
FS.Write("collezione",myHashTable)
FS.Write("classe",miaClasse)

FS.Read : legge il contenuto dal FileSession

dim nome as string=FS.Read("nome")

FS.Count : ritorna il numero di dati presenti nel FileSession

 

FS.Exist : verifica se è presente un oggetto nella FileSession

if FS.Exist("nome")=true then
  ' esiste
else
  ' non esiste
end if

FS.Remove : cancella un oggetto dal FileSession

FS.Remove("nome")

FS.SessionID : restituisce l'identificativo di sessione dell'utente attuale

dim id as string=FS.SessionID

FS.SetAuthCookie : imposta l'autenticazione personalizzata

FS.SetAuthCookie("Andrea")
FS.SetAuthCookie("Andrea","Amministratore") ' con roles

FS.SignOut() : cancella l'autenticazione

 

FS.GetRedirectUrl() : restituisce la pagina che ha richiamato la pagina di login

Response.Redirect(FS.GetRedirectUrl())

FS.RedirectFromLoginPage : come la funzione in FormsAuthentication, imposta l'autenticazione ed esegue il redirect alla pagina che ha richiamato la pagina di login

FS.RedirectFromLoginPage()
FS.RedirectFromLoginPage("andrea")
FS.RedirectFromLoginPage("andrea","amministratore")

FS.Authenticate : controlla l'utente e la password con quelle presenti nella sezione nel web.config, come l'Authenticate della classe FormsAuthentication

if FS.Authenticate("andrea","mia_password") then
  ' presente con password corretta
else
  ' non autenticabile
end if

FS.UserName : ritorna il nome dell'utente attuale

 

FS.Role : ritorna la role dell'utente attuale

 

FS.IsAuthenticated : ritorna un valore booleano (true/false), che indica se l'utente attuale è autenticato o meno

 

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC