Codeausführung im Sharepoint mit erweiterten Berechtigungen

Will man über einen WebPart Aktionen durchführen zu denen der angemeldete Benutzer nicht berechtigt ist, zum Beispiel:
  • Auslesen/Ändern von Listen
  • Anlegen von Dokumenten / Webseiten
  • Löschen von Informationen

kann man sich die benötigten Rechte für einen definierten Codeabschnitt über ein spezielles Security - Delegate des Sharepoint beschaffen.

Das verwendete Delegate ist "SPSecurity.CodeToRunElevated", welches mit der Methode "SPSecurity.RunWithElevatedPrivileges" aufgerufen werden kann.

Beispiel für das Anlegen eines neuen Eintrags in einer Liste:


         void cmdAction_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
//...
try
{
Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(
delegate()
{
//Initialisierung etc
//...
using (Microsoft.SharePoint.SPSite SPSite = new Microsoft.SharePoint.SPSite(Microsoft.SharePoint.SPContext.Current.Site.ID))
{
Microsoft.SharePoint.SPListItem newItem
= SPSite.OpenWeb().Lists[ListName].Items.Add();
newItem[
"Title"] = "Beispiel";
newItem.Update();
}
});
//RunWithElevatedPrivileges
}
catch (Exception ex)
{
//Fehlerbehandlung
}
}



Wichtig für die korrekte Funktion ist die Verwendung eines neuen Site und Web-Objektes.

Keine Kommentare: