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

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

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

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

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

@Edit: как отмечает Фло в своем ответе, существует проблема с настройкой

folder.ParentWeb.AllowUnsafeUpdates = true;

и с помощью BreakRoleInheritance С аргументом "false" (т. е. без копирования разрешений родительского объекта).

folder.Item.BreakRoleInheritance(false);

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

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

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

спасибо!

2 ответов


У вас это очень здорово. Я считаю, что RoleAssignments действительно единственный механизм для управления разрешениями напрямую. Вот в должности это показывает быстрый пример того, как это сделать. Я также использовал эти два посты когда я сделал несколько более сложных вещей.


этой в должности также будет интересно при работе с методом BreakRoleInheritance (). Речь идет о проблеме, с которой вы можете столкнуться при использовании BreakRoleInheritance(false).