ASP.Net  »  Articoli  »  Mondo ASP.NET 

Login Control

di: Mauro Bennici     24 Marzo 2006

In ASP.NET 2.0 la Microsoft ha aggiunto o migliorato molti controlli, quasi cinquanta, per consentire allo sviluppatore di effettuare meglio ed in meno tempo molte funzioni di uso comune. Una delle funzioni che è stata rivista in maniera più pesante è quella di autenticazione ed autorizzazione dell'utente. Per chi non lo sapesse ricordo che l'autorizzazione è quel processo composto da procedure attraverso le quali riconoscere un utente della nostra applicazione, la forma più comune è un form dove inserire username e password, mentre l'autorizzazione è composta da tutti quei processi che verificano volta per volta cosa un utente può fare e cosa no.

Sebbene i servizi di autenticazione siano rimasti invariati dalla precedente versione di ASP.NET tutta la fase di gestione dell'utente è stata ampliata con dei controlli chiamati 'Login Control'. Questi nuovi controlli generano in automatico tutto il codice di cui abbiamo bisogno per le operazioni che fino ad ora ogni programmatore ha dovuto riscrivere volta per volta per ogni sua applicazione. Come avrete capito stiamo parlando della pagina di registrazione utente, del login, del cambio e del recupero della password. Inoltre sono stati aggiunti dei controlli per mostrare il nome dell'utente loggato e per mostrare la classifica scritta 'Login' se non autenticato e 'Logout' se autenticati.

Ma la novità più importante a livello architetturale sono le nuove classi 'Membership' e 'RoleManager' che a loro volta contengono le classi 'MembershipUser' una e 'Roles' l'altra. Grazie a queste nuove classi potremo intervenire sui nostri utenti in maniera sicura e senza dover scrivere tutte le volte un sistema di gestione. Attraverso la classe 'MembershipUser', che altro non è che un'istanza di ogni singolo utente, potremo creare, modificare, eliminare, bloccare gli utenti, mentre la classe 'Membership' ci permetterà per esempio di cercarli e contarli. Le istanze degli utenti hanno per 'Default' delle proprietà molto interessanti:

  • IsOnline, per sapere se un utente è attualmente sul sito
  • IsApproved, per conoscere lo stato di una registrazione pendente come può accadere nei forum moderati
  • IsLockedOut, ovvero bannato.

oltre a queste abbiamo i dati di registrazione, di ultimo accesso, di ultimo 'ban' e dell'ultima operazione effettuata.

Le classi per la gestione dei ruoli hanno invece il compito di garantire la sicurezza all'interno dell'applicazione, devono dunque garantire che solo agli utenti appartenenti a dei ruoli predeterminati sia consentita l'esecuzione di specifiche operazioni. Questa autorizzazione può essere concessa pagina per pagina attraverso il comando 'User.IsInRole' oppure per pagine e/o directory all'interno del 'Web.Config'.

<location path="pannellodicontrollo">
<system.web>
<authorization>
<allow roles="Gestore" />
<deny users="*"/>
</authorization>
</system.web>
</location>

in questo modo soltanto gli utenti appartenenti al ruolo di 'Gestore' possono entrare nella directory 'pannellodicontrollo.'. Vi ricordo che l'ordine delle parole chiave 'allow' e 'deny' è importante, nel nostro caso infatti invertirle non permetterebbe a nessuno di entrare del 'pannellodicontrollo'. I simboli per l'autorizzazione sono:

  • Asterisco (*) per tutti gli utenti
  • Punto interrogativo (?) per gli utenti anonimi

Guide ASP.Net

Guida Nant

Nant è il porting del celebre Ant per Java, un 'build tool', un...

Guida ASP.NET MVC

Un percorso per capire i meccanismi del nuovo Framework Microsoft...

Guida Silverlight

Sviluppare Rich Internet Application e contenuti multimediali...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Windows server 2008

29 Marzo 2010 a Milano
Disponibilità: 7 Posti

Corso Webmaster con ASP.Net

22 Marzo 2010 a Roma
Disponibilità: 7 Posti