Sharepoint: Как программно управлять разрешениями SPFolder и SPListItem

Я хочу знать, что я что-то упустил. Вот как я бы это сделал: для SPFolder я бы изменил разрешения для связанного элемента (SPFolder.Item). Поэтому я полагаю, что управление разрешениями SPFolder сводится к управлению разрешениями SPListItem. Для SPListItem я бы сломал роль наследования сSPListItem.BreakRoleInheritance() а затем работать сRoleAssignments сборы добавления и удаления ролей там.

Интересно, является ли RoleAssignments единственным способом управления разрешениями SPListItem (помимо наследования) и существует ли способ управления отдельными разрешениями без ролей. Существует также свойство EffectiveBasePermissions, но я не уверен.

Таким образом, вопрос заключается в том, существуют ли другие способы (помимо наследования) для управления разрешениями SPListItem, кроме коллекции RoleAssignments?

@Редактировать: есть также AllRolesForCurrentUser, но я думаю, что вы можете получить ту же информацию из свойства RoleAssignments, так что это только для удобства.

@Редактировать: Как отмечает Фло в своем ответе, проблема с настройкой

folder.ParentWeb.AllowUnsafeUpdates = true;

И используяBreakRoleInheritance с аргументом 'ложь' (т.е. без копирования полномочий родительского объекта).

folder.Item.BreakRoleInheritance(false);

BreakRoleInheritance просто не будет работать с GET-запросом, как вы ожидаете после разрешения небезопасных обновлений. Предположительно метод сбрасываетAllowUnsafeUpdates вернуться к «ложь».

Я знаю один обходной путь для этого - вручную удалить унаследованные разрешения после BreakRoleInheritance (true), например:

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

Спасибо!

Ответы на вопрос(0)

Ваш ответ на вопрос