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);
}
Спасибо!