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.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Miglioramenti nelle performance di Angular 16
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- HTML5 con CSS e JavaScript
- Ottimizzazione dei block template in Angular 17
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!