Qualche tempo fa ho dovuto implementare un sistema di accesso con gestione dei roles. Per risolvere il problema ho utilizzato un ticket, che in pratica è un cookie crittografato che permette di conservare alcune informazioni sull'utente.
Il ticket associato ad FormsAuthenticationTicket può contenere informazioni relative all'utente e nel caso specifico, attraverso la proprietà UserData, può archiviare tutti i Roles relativi all'utente. In questo modo quando si ha bisogno di sapere se l'utente ha i privilegi per il servizio o per una determinata operazione, ci basta interrogare la proprietà.
Il codice utilizzato è incluso in una classe:
Public Class Authentication
' costruttore
Public Sub New(version As Integer, name As String, issueDate As DateTime, expiration As DateTime, isPersistent As Boolean, userData As String)
' creo un nuovo ticket di tipo FormsAuthenticationTicket
' Username contiene il nome dell'utente
' DateTime.Now.AddMinutes(20) indica la durata del cookie
Dim Ticket As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, UserName, DateTime.Now, DateTime.Now.AddMinutes(20), False, strRoles)
Dim encTicket As String = FormsAuthentication.Encrypt(Ticket)
' creo il cookie
Dim authCookie As New HttpCookie(FormsAuthentication.FormsCookieName, encTicket)
' è possibile specificare un path
authCookie.path = "/"
' è possibile specificare l'intero dominio
authCookie.domain = "dominio.tld"
' aggiungiamo il cookie ai cookies della risposta
HttpContext.Current.Response.Cookies.Add(authCookie)
End Sub
End Class
Per recuperare le informazioni immagazzinate è possibile utilizzare il campo UserData:
Public Shared Function getRoles() As String
Dim authcookie As HttpCookie
Dim Ticket As FormsAuthenticationTicket
Dim Roles As String
' leggiamo il ticket
authcookie = HttpContext.Current.Request.Cookies(FormsAuthentication.FormsCookieName)
Ticket = CType(FormsAuthentication.Decrypt(authcookie.Value), FormsAuthenticationTicket)
' leggiamo UserDate
Roles = Ticket.UserData
return Roles
End FunctionPer approfondimenti sulla Forms Authentication si veda:
http://www.aspitalia.com/ricerca/super.aspx?key=forms+authentication
- Architettura del software: le applicazioni web a tre livelli
- #901 - Impostare PrincipalPermission da un file XML
- #925 - Usare Medium Trust in ASP.NET 2.0 e 3.5
- #934 - Accedere ai dati usando LinqDataSource
- UrlRewriting con trabocchetti vari
- #929 - Impersonation di utente per l'esecuzione di codice in una pagina ASP.NET
- ASP.NET 3.5: global.asax vs managed modules
- Membership API per SQL Server anche senza dbo
- uno snippet per inserire riga di commento
- ASP.NET 3.5 Extensions: introduzione ad ASP.NET MVC
- #13 - Invocare il PostBack di un controllo ASP.NET da Silverlight
- ListView è DataPager
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.









Stampa
Snippet
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
