2008-11-19 9 views
6

Chcę wiedzieć, czy czegoś brakuje. Oto, jak bym to zrobił: Dla SPFoldera zmieniłbym uprawnienia przypisanego elementu (SPFolder.Item). Przypuszczam, że zarządzanie uprawnieniami SPFolder sprowadza się do zarządzania uprawnieniami SPListItem. Dla SPListItem Chciałbym najpierw złamać dziedziczenie roli z SPListItem.BreakRoleInheritance(), a następnie pracować z kolekcjami RoleAssignments dodając i usuwając tam role.SharePoint: Jak programowo zarządzać uprawnieniami SPFolder i SPListItem

Zastanawiam się, czy RoleAssignments jest jedynym sposobem na zarządzanie uprawnieniami SPListItem (oprócz dziedziczenia) i czy istnieje sposób na zarządzanie poszczególnymi uprawnieniami bez ról. Istnieje również właściwość EffectiveBasePermissions, ale nie jestem pewien.

Pytanie brzmi: Czy istnieją inne sposoby (oprócz dziedziczenia) do zarządzania uprawnieniami SPListItem oprócz kolekcji RoleAssignments?

@Edit: istnieje również AllRolesForCurrentUser, ale myślę, że można uzyskać te same informacje z nieruchomości RoleAssignments, więc to jest po prostu dla wygody.

@Edit: W Flo stwierdza w swojej odpowiedzi nie ma problemu z ustawieniem

folder.ParentWeb.AllowUnsafeUpdates = true; 

i korzystania BreakRoleInheritance z argumentem „false” (czyli bez kopiowania uprawnień obiektu nadrzędnego).

folder.Item.BreakRoleInheritance(false); 

BreakRoleInheritance po prostu nie będzie działać na żądanie GET jak można się spodziewać po uwzględnieniu niebezpiecznych aktualizacji. Prawdopodobnie metoda resetuje AllowUnsafeUpdates z powrotem na "fałsz".

Jedno wiem na obejście tego jest ręczne usuwanie uprawnień dziedziczonych po ciebie BreakRoleInheritance (true), tak:

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

Dzięki!

Odpowiedz

3

Masz to prawie w porządku. Wierzę, że RoleAssignments są rzeczywiście jedynym mechanizmem bezpośredniego zarządzania uprawnieniami. Oto post, który pokazuje szybki przykład, jak to zrobić. Też używałem tych twoposts kiedy robiłem bardziej skomplikowane rzeczy.

3

Ten post będzie również interesował podczas pracy z metodą BreakRoleInheritance(). Chodzi o problem, na który możesz natrafić podczas używania BreakRoleInheritance (false).

+0

Masz rację :) Miałem ten sam problem i natknąłem się na ten post. – axk