Limitare l'accesso a metodi di una classe

di Fabio Civerchia

Avvolte può essere necessario utilizzare determinate procedure solo se si è ad esempio amministratori del sistema.

L'oggetto PrincipalPermissionAttribute può essere utilizzato per richiedere che l'utilizzo di una classe o un metodo in essa possa essere utilizzato solo da che dispongano di un ruolo specifico o siano stati autenticati. Esempio:

using System;

using System.Security;

using System.Threading;

using System.Security.Permissions;

using System.Security.Principal;

namespace ClassPermission

{

      public class Class1

      {

            static void Main(string[] args)

            {

                  Thread.GetDomain().SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

                  try

                  {

                        ClassSicurezza.MethodA();

                  }

                  catch (SecurityException ex)

                  {

                      Console.WriteLine("Non sei autorizzato ad accedere al metodo MethodA! Cambia il Ruolo.");

                        Console.WriteLine(ex.Message);

                  }

                  try

                  {

                        ClassSicurezza.MethodB();

                  }

                  catch (SecurityException ex)

                  {

                        Console.WriteLine("Non sei autorizzato ad accedere al metodo MethodB! Cambia il Ruolo.");

                        Console.WriteLine(ex.Message);

                  }

                  Console.ReadLine();    

            }

      }

      class ClassSicurezza

      {

            // Può essere chiamata solo dal gruppo amministartore

            [PrincipalPermissionAttribute(SecurityAction.Demand,

                   Role=@"BUILTIN\Administrators")]

            public static void MethodA()

            {

                  Console.WriteLine("OK! Sei l'utente! UseName: " +

                        Thread.CurrentPrincipal.Identity.Name + " MethodA Chiamato!");

            }

            [PrincipalPermissionAttribute(SecurityAction.Demand,

                   Role=@"BUILTIN\User")]

            public static void MethodB()

            {

                  Console.WriteLine("OK! Sei l'utente! UseName: " +

                        Thread.CurrentPrincipal.Identity.Name + " MethodB Chiamato!");

            }

      }

}

 

 

Commenti

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

Nella stessa categoria
    Nessuna risorsa collegata
    I più letti del mese