SharePoint列表项权限

5
我想通过编程使用户只能看到列表中特定的项目。
基本上,在创建项目后运行的工作流中,我将执行一些操作并通知某些人有关此项目的信息。我还希望更改项目的权限,以使只有特定用户(根据项目内容在运行时查找)可以读取该项目。具有访问列表权限的其他用户将仅看到特定项目而不是全部项目。列表项可能不一定是所有者,但需要查看它的用户(们),因此我不能将列表权限设置为仅允许用户查看自己的项目。
如果有帮助,可以将其置于上下文中- 列表正在向特定成员注册职位。每个列表项都是一个角色分配,其中包含对角色列表中角色和成员列表中成员的查找。我没有直接在角色列表中使用多重查找字段来处理角色,因为每个角色分配需要保存关于它的额外信息,例如描述、开始日期等。每个角色都有一个特定的用户/组管理。当访问这个大型角色分配列表时,我希望用户只能看到他们是经理的角色分配。
非常感谢您的建议。
1个回答

10

您可以为单个列表项分配权限。例如:

        // get list item
        SPListItem item = <your list item>;
        if (!item.HasUniqueRoleAssignments)
        {
            item.BreakRoleInheritance(true);
        }

        // get principal
        SPPrincipal principal = <principal to grant permissions to>;

        // get role definition
        SPRoleDefinition rd = <role that contains the permissions to be granted to the principal>;

        // create role assignment
        SPRoleAssignment ra = new SPRoleAssignment(principal);
        ra.RoleDefinitionBindings.Add(rd);
        item.RoleAssignments.Add(ra);

但需要注意将权限分配到每个列表项上可能会对性能和操作产生影响。

总的来说,我更倾向于:

  • 权限不要分配得比列表级别更深
  • 尽可能地将权限分配给组,然后将个别用户包含在这些组中。

此外,这个问题/答案可能会有所帮助:http://stackoverflow.com/questions/1058232 - Alex Angas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接