SPSecurity.RunWithElevatedPrivileges - Méthode

Exécute la méthode spécifiée avec les droits de contrôle total même si l'utilisateur n'a pas autrement de contrôle total.

Espace de noms :  Microsoft.SharePoint
Assembly :  Microsoft.SharePoint (dans Microsoft.SharePoint.dll)

Syntaxe

'Déclaration
Public Shared Sub RunWithElevatedPrivileges ( _
    secureCode As SPSecurity.CodeToRunElevated _
)
'Utilisation
Dim secureCode As SPSecurity.CodeToRunElevatedSPSecurity.RunWithElevatedPrivileges(secureCode)
public static void RunWithElevatedPrivileges(
    SPSecurity.CodeToRunElevated secureCode
)

Paramètres

  • secureCode
    Type : Microsoft.SharePoint.SPSecurity.CodeToRunElevated

    Une méthode déléguée qui doit s'exécuter avec des droits élevés. Cette méthode s'exécute sous l'identité du Pool d'applications, qui possède des privilèges d'administrateur de collection de site dans toutes les collections de sites hébergées par ce pool d'applications.

Remarques

L'objet secureCode peut être créé à partir de n'importe quelle méthode sans paramètre et renvoie void. Voir SPSecurity.CodeToRunElevated.

Vous pouvez également ignorer l'utilisation du constructeur de SPSecurity.CodeToRunElevated en définissant une méthode anonyme à l'intérieur de l'appel à RunWithElevatedPrivileges.

Important

Si secureCode inclut les opérations d'écriture, l'appel à RunWithElevatedPrivileges doit être précédée d'un appel de SPUtility.ValidateFormDigest() ou SPWeb.ValidateFormDigest().

Exemples

Le premier exemple illustre RunWithElevatedPrivileges utilisé avec le constructeur SPSecurity.CodeToRunElevated . Dans cet exemple, GetSitesAndGroups est une méthode sans paramètre qui retourne void et est définie à un endroit accessible par la méthode Button1_Click .

protected void Button1_Click(object sender, EventArgs e)
{
   SPSecurity.CodeToRunElevated elevatedGetSitesAndGroups = new SPSecurity.CodeToRunElevated(GetSitesAndGroups);
   SPSecurity.RunWithElevatedPrivileges(elevatedGetSitesAndGroups);
}

L'exemple suivant illustre la syntaxe qui est nécessaire pour définir une méthode anonyme dans l'appel à RunWithElevatedPrivileges.

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    // implementation details omitted
});

Un objet SPSite créé en dehors du délégué peut être référencé à l'intérieur du délégué, toutefois, les méthodes et les évaluateurs de propriété de l'objet exécutent avec les privilèges du contexte utilisateur dans lequel les objets ont été créés, et non avec des privilèges élevés. Le même point s'applique aux objets de SPWeb et d'autres objets. Vous devez créer de nouveaux objets à l'intérieur du délégué si vous avez besoin exécuter les membres des objets avec des privilèges élevés. Si le nouvel objet doit représenter la même entité rendue persistante sous la forme d'un objet créé à l'extérieur du délégué, vous devez faire référence à des informations d'identification de l'objet créé en externe et l'utiliser pour créer le nouvel objet dans le délégué. Par exemple, si web est une référence à un objet SPWeb créé avant l'appel à RunWithElevatedPrivileges, le code suivant affiche que l'ID de son objet de SPSite parent permet de construire un nouvel objet SPSite .

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    using (SPSite site = new SPSite(web.Site.ID))
    {
    // implementation details omitted
    }
});

Dans le délégué, les membres de l'objet site exécuter avec des privilèges élevés, mais les appels aux membres de web.Site ne seraient pas. Notez que le mot-clé using est utilisé pour s'assurer que l'objet est supprimé dans le délégué.

Voir aussi

Référence

SPSecurity classe

SPSecurity - Membres

Microsoft.SharePoint - Espace de noms

Autres ressources

Elevation of Privilege

Anonymous Methods (C# Programming Guide)