Introduzione
ASP.NET permette una facile gestione di aree protette nei nostri siti grazie ai vari tipi di autenticazione che mette a disposizione in modo del tutto automatico:
- Autenticazione Windows
- Autenticazione Forms
- Autenticazione Passport
A parte l'ultima che è stata pressocché ignorata dagli sviluppatori, le prime due sono veramente utilissime e facili da configurare. Con l'autenticazione integrata di Windows possiamo, grazie a poche righe nel file web.config, permettere l'accesso a utenti (o gruppi di utenti) creati da "Gestione computer", a determinate directory o pagine ASP.NET. Ovviamente questo tipo di autorizzazione può essere utilizzato pienamente solo se si ha tra le mani il server (creazione e gestione di utenti o gruppi di utenti).
L'autenticazione basata sui Forms, invece, è utilizzabile senza molti sforzi su qualsiasi piano di hosting: per ogni cartella che vogliamo proteggere è sufficiente inserire un file web.config con la sezione
Limiti dell'autenticazione basata sui Forms
E sì, anche se il framework ci facilita di molto il lavoro per la protezione di determinate directory o pagine nel nostro sito, con l'autenticazione basata sui Forms andiamo incontro a dei limiti che in determinati casi possono essere fastidiosi.
Prediamo dei casi reali: in un sito vogliamo che solo gli utenti che si sono registrati, possano accedere a una determinata sezione. Per fare questo è sufficiente creare un nostro web.config nella root con questo codice:
<configuration>
<system.web>
<authentication mode="Forms">
<forms name="myform" loginUrl="login.aspx"
protection="All" timeout="20" />
</authentication>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</configuration>E nella directory che vogliamo proteggere:
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>Quando l'utente cercherà di visualizzare qualche pagina ASP.NET da questa cartella, verrà rimandato alla pagina "login.aspx" dove potrà inserire i suoi dati; sarà quindi il nostro codice, dopo aver controllato i dati inseriti, ad autenticare o meno il visitatore.
Tutto semplice dunque.
Ma facciamo un'ulteriore ipotesi. In un nostro sito abbiamo più sezioni da proteggere, e vogliamo che alcuni possano accedere solo ad una sezione (e solo a questa), alcuni ad un'altra, altri a tutte le sezioni, ad esempio l'amministratore.
Con l'autenticazione integrata in Windows possiamo realizzare il tutto facilmente, è sufficiente inserire gli utenti in gruppi con le apposite autorizzazione e tutto si risolve senza altri sforzi.
E con l'autenticazione basata sui Forms? Come possiamo sapere che un utente è autorizzato o meno a una sezione del sito? La soluzione più semplice e la prima che viene in mente, soprattutto se si proviene dal mondo di Classic ASP, è l'utilizzo di una variabile Session dove memorizzare le autorizzazioni o il gruppo di quell'utente, quindi, all'inizio della nostra pagina ASP.NET è sufficiente inserire un banale controllo:
void Page_Load(Object o, EventArgs e) {
if (Session["gruppo"]!="Utente normale") Response.Redirect ("Errore.aspx");
//
// ...
//
}Ovviamente questo controllo dovremo inserirlo per ogni pagina ASP.NET della sezione e questo per tutte le pagine di tutte le sezioni!
Cerchiamo dunque di trovare una soluzione migliore al problema.
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Difficoltà
Utilità
Contenuti

Stampa
Download




Ciao, sono alle prese con le Roles di asp.net 2.0, ho letto il tuo tutorial ma ahimè una volta riadattato al mio misero progettino non funziona.E' ...
Continua »»» | Rispondi »»»