代码之家  ›  专栏  ›  技术社区  ›  axk

Sharepoint:如何以编程方式管理SPFolder和SPListItem权限

  •  6
  • axk  · 技术社区  · 17 年前

    我想知道我是否遗漏了什么。 我会这样做: 对于SPFolder,我将更改关联项的权限(SPFolder.item)。 因此,我认为管理SPFolder权限可以归结为管理SPListItem权限。 对于SPListItem,我将首先使用 SPListItem.BreakRoleInheritance() RoleAssignments

    我想知道RoleAssignments是否是管理SPListItem权限(除了继承)的唯一方法,是否有一种方法可以管理没有角色的个人权限。 还有EffectiveBasePermissions属性,但我不确定。

    除了RoleAssignments集合之外,还有其他方法(除了继承)管理SPListItem权限吗?

    @编辑: 还有AllRolesForCurrentUser,但我想您可以从RoleAssignments属性获得相同的信息,所以这一个只是为了方便。

    @编辑: 正如弗洛在他的回答中指出的,设置有问题

    folder.ParentWeb.AllowUnsafeUpdates = true;
    

    BreakRoleInheritance 参数为“false”(即不复制父对象的权限)。

    folder.Item.BreakRoleInheritance(false);
    

    破环率 在允许不安全的更新后,GET请求将无法正常工作。想必该方法会重置 AllowUnsafeUpdates 回到“假”。

    我知道的一种解决方法是在打破RoleInheritance(true)后手动删除继承的权限,如下所示:

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

    2 回复  |  直到 15 年前
        1
  •  3
  •   Mick    17 年前

    你说得很对。我相信角色分配确实是直接管理权限的唯一机制。这里有一个 post two posts 当我做一些更复杂的事情时。

        2
  •  3
  •   Flo    17 年前

    post 在使用BreakRoleInheritance()方法时,也将非常有趣。这是关于使用BreakRoleInheritance(false)时可能遇到的问题。