#729 - Enumerare i ruoli di un IPrincipal
L'interfaccia IPrincipal non espone un metodo diretto per enumerare i ruoli associati all'utente, quindi di fatto tutte le implementazioni delle protezione in ASP.NET, dalla FormsAuthentication alla WindowsAuthentication, non possiedono questa caratteristica.
E' tuttavia possibile enumera la lista degli utenti, dato che ASP.NET ne tiene traccia internamente, utilizzando Reflection ed accedendo dunque al campo privato m_roles.
<%@ Import namespace="System.Reflection"%>
<SCRIPT RUNAT="SERVER" LANGUAGE="C#">
void Page_Load()
{
System.Security.Principal.IPrincipal princ = HttpContext.Current.User;
Type type = princ.GetType();
// chiamata necessaria per far caricare i ruoli
princ.IsInRole("Test");
// ricavo i ruoli con reflection
String[] roles = (String[]) type.GetField("m_roles", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(princ);
dg.DataSource = roles;
dg.DataBind();
}
</SCRIPT>
<asp:datagrid id="dg" runat="server" />
Ovviamente essendo basato su Reflection questo approccio non è garantito che funzioni su future versioni di ASP.NET, ma al momento per la 1.1 compie egregiamente il proprio lavoro.
Approfondimenti
- Prima beta pubblica per il SP1 del .NET Framework 3.5 e VS 2008
- BookStore Pubs 2.1
- #955 - Realizzare un metodo FindControl generico utilizzando gli Extension Method
- Attaccare bottone
- Cosa fare se la vostra applicazione ASP o ASP.NET è vittima di SQL injection
- #926 - Autenticazione con Membership API e selezione del dominio per Active Directory
- 3-Tier, 3-Layer e MVC: ma sono la stessa cosa?
- #932 - Il controllo ListView di ASP.NET 3.5
- #923 - Caricare dinamicamente un HttpModule
- Realizzare un controllo custom in ASP.NET AJAX - Prima parte
- #928 - Proteggere il ViewState di ASP.NET criptandolo
- #908 - Cache con dipendenze aggregate con AggregateCacheDependency
Commenti
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!