Ticket e Roles

In questi giorni ho dovuto implementare un bel sistemino di accesso riservato ai contents ed ai services. il bello di tutto questo e' che doveva funzionare per tutti i siti che si basano sulla struttura di accesso condiviso.

Per avere un controllo su ogni service e anche su ogni content inserito per ogni utente (circa 400.000), ho dovuto implementare qualcosa di molto flessibile ed allo stesso tempo sicuro.

Per fare cio' ho creato alcune tabelle di accoppiamento tra gli utenti ed i profili di accesso, collegando ad ogni profilo tutti i roles a cui ha accesso. Ogni roles infatti e' collegato al tipo di service (ogni service un role), ovviamente ogni content puo' essere collegato ad uno o piu' services.

Detto questo che puo' significare tutto e niente, vengo a quello che volevo dire, ovvero per portarmi dietro in ogni fase della navigazione dell'utente tutti i suoi privilegi di accesso (roles) mi sono appoggiato ad un Ticket. Tale Ticket associato al tipo FormsAuthenticationTicket puo' contenere delel informazioni relative all'utente, ed io ho usato la proprieta' UserData per archiviare tutti i Roles relativi all'utente in modo da poterli richiamare in ogni momento.

Riporto una parte del codice dove in pratica viene caricato il ticket e il cookie relativo:

Dim Ticket As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, UserName, DateTime.Now, DateTime.Now.AddMinutes(240), False, strRoles)
Dim encTicket As String = FormsAuthentication.Encrypt(Ticket)
Dim authCookie As New HttpCookie(FormsAuthentication.FormsCookieName, encTicket)
HttpContext.Current.Response.Cookies.Add(authCookie)

e la parte dove riprendo le informazioni:

Dim authcookie As HttpCookie
Dim Ticket As FormsAuthenticationTicket
Dim Roles As String
authcookie = HttpContext.Current.Request.Cookies(FormsAuthentication.FormsCookieName)
Ticket = CType(FormsAuthentication.Decrypt(authcookie.Value), FormsAuthenticationTicket)
Roles = Ticket.UserData

Per il momento e' tutto... il resto dell'applicazione ancora non e' completata :)

Nella stessa categoria

Commenti

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

© 1998-2008 - LMLog - Il blog di Lino Mari