Sharepoint: Programmgesteuertes Verwalten von SPFolder- und SPListItem-Berechtigungen

Ich möchte wissen, ob mir etwas fehlt. So würde ich es machen: Für SPFolder würde ich die Berechtigungen des zugeordneten Elements (SPFolder.Item) ändern. Ich nehme also an, die Verwaltung von SPFolder-Berechtigungen beschränkt sich auf die Verwaltung von SPListItem-Berechtigungen. Für SPListItem würde ich zuerst die Rollenvererbung mit @ unterbrecheSPListItem.BreakRoleInheritance() und dann mit @ arbeitRoleAssignments Sammlungen, die dort Rollen hinzufügen und entfernen.

Ich frage mich, ob RoleAssignments die einzige Möglichkeit ist, die Berechtigungen von SPListItem (neben der Vererbung) zu verwalten, und ob es eine Möglichkeit gibt, einzelne Berechtigungen ohne Rollen zu verwalten. Es gibt auch die Eigenschaft EffectiveBasePermissions, aber ich bin mir nicht sicher.

So ist die Frage, ob es neben der Vererbung noch andere Möglichkeiten zum Verwalten von SPListItem-Berechtigungen gibt, abgesehen von der RoleAssignments-Auflistung?

@Bearbeiten Es gibt auch AllRolesForCurrentUser, aber ich vermute, Sie können die gleichen Informationen aus der Eigenschaft RoleAssignments abrufe

@Bearbeiten Wie Flo in seiner Antwort bemerkt, gibt es ein Problem mit der Einstellung von

folder.ParentWeb.AllowUnsafeUpdates = true;

Und mitBreakRoleInheritance mit dem Argument 'false' (d. h. ohne die Berechtigungen des übergeordneten Objekts zu kopieren).

folder.Item.BreakRoleInheritance(false);

BreakRoleInheritance funktioniert bei GET-Anfragen einfach nicht wie erwartet, nachdem unsichere Updates zugelassen wurden. Vermutlich setzt die Methode @ zurüAllowUnsafeUpdates zurück zu 'false'.

Eine Umgehung, die ich kenne, besteht darin, die geerbten Berechtigungen manuell zu löschen, nachdem Sie BreakRoleInheritance (true) ausgeführt haben:

folder.Item.BreakRoleInheritance(false);
while(folder.Item.RoleAssignments.Count > 0) {
    folder.Item.RoleAssignments.Remove(0);
}

Vielen Dank

Antworten auf die Frage(4)

Ihre Antwort auf die Frage