2008-11-19 11 views
6

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!

Antwort

3

Sie haben es ziemlich richtig. Ich glaube, dass RoleAssignments tatsächlich der einzige Mechanismus sind, um Berechtigungen direkt zu verwalten. Hier ist eine post, die ein schnelles Beispiel zeigt, wie es geht. Ich habe auch diese twoposts verwendet, wenn ich etwas kompliziertere Dinge getan habe.

3

Diese post wird auch interessant sein, wenn Sie mit der BreakRoleInheritance() - Methode arbeiten. Es handelt sich um ein Problem, das bei der Verwendung von BreakRoleInheritance (false) auftreten könnte.

+0

Du hast Recht :) Ich hatte das gleiche Problem und bin auch auf diesen Beitrag gestoßen. – axk

Verwandte Themen