Ich möchte wissen, ob ich etwas vermisse. So würde ich es tun: Für SPFolder würde ich die Berechtigungen des assoziierten Elements ändern (SPFolder.Item). Ich nehme an, die Verwaltung von SPFolder-Berechtigungen läuft darauf hinaus, SPListItem-Berechtigungen zu verwalten. Für SPListItem würde ich zuerst die Rollenvererbung mit SPListItem.BreakRoleInheritance()
unterbrechen und dann mit RoleAssignments
Collections arbeiten, die dort Rollen hinzufügen und entfernen.Sharepoint: Wie programmgesteuert verwalten SPFolder und SPListItem Berechtigungen
Ich frage mich, ob RoleAssignments die einzige Möglichkeit ist, SPListItems Berechtigungen zu verwalten (neben der Vererbung) und gibt es eine Möglichkeit, einzelne Berechtigungen ohne Rollen zu verwalten. Es gibt auch eine EffectiveBasePermissions-Eigenschaft, aber ich bin mir nicht sicher.
Die Frage ist also wird es andere Möglichkeiten (neben Vererbung) SPListItem Berechtigungen abgesehen von der RoleAssignments Sammlung zu verwalten?
@Edit: Es gibt auch AllRolesForCurrentUser, aber ich denke, Sie können die gleichen Informationen von der RoleAssignments -Eigenschaft erhalten, so ist dies nur für die Bequemlichkeit.
@Edit: Als Flo stellt in seiner Antwort gibt es ein Problem mit der Einstellung
folder.ParentWeb.AllowUnsafeUpdates = true;
Und mit BreakRoleInheritance
mit dem Argument von 'falsch' (das heißt ohne Berechtigungen des übergeordneten Objekt kopieren).
folder.Item.BreakRoleInheritance(false);
BreakRoleInheritance
einfach nicht auf GET-Anfrage funktioniert, wie Sie, nachdem man unsicheres Updates erwarten würden. Vermutlich setzt die Methode AllowUnsafeUpdates
zurück auf 'falsch'.
Eine Abhilfe, die ich für diese wissen, ist, manuell die geerbten Berechtigungen, nachdem Sie löschen BreakRoleInheritance (true), wie folgt aus:
folder.Item.BreakRoleInheritance(false);
while(folder.Item.RoleAssignments.Count > 0) {
folder.Item.RoleAssignments.Remove(0);
}
Dank!
Du hast Recht :) Ich hatte das gleiche Problem und bin auch auf diesen Beitrag gestoßen. – axk