c# - SharePoint 列表项权限

标签 c# sharepoint permissions workflow listitem

我想以编程方式制作它,以便用户只能看到列表中的特定项目。

基本上,在创建项目时运行的工作流程中,我将做一些事情并通知一些人有关此项目的信息。我还希望它更改项目的权限,以便只有特定用户(根据项目内容在运行时查找)才能阅读该项目。有权访问该列表的其他用户将只能看到特定项目,而不是所有项目。列表项可能不一定是拥有的,但用户需要查看它,所以我无法将列表权限设置为让用户只能看到他们自己的项目。

如果有帮助,将其置于上下文中 - 该列表正在为特定成员注册工作角色。每个列表项都是一个角色分配,其中包含对角色列表中角色的查找和对成员列表中成员的查找。我没有直接在角色的成员列表中使用多查找字段,因为每个角色分配都需要保存有关它的额外信息,例如描述、开始日期等。 每个角色都有一个特定的用户/组来管理它。我想要这样,当转到这个大的角色分配列表时,用户只能看到他们所管理的角色的角色分配。

非常感谢您的建议。

最佳答案

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

        // 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);

但要注意为每个列表项分配权限对性能和操作的影响。

一般来说,我更喜欢

  • 分配的权限不超过列表级别
  • 尽可能为组分配权限,然后将个人用户纳入这些组。

关于c# - SharePoint 列表项权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1069588/

相关文章:

c# - 写入文件时为 "Cannot access file"

Sharepoint 上的 Flash 视频

windows - Sharepoint 工作流与 Windows 工作流

sharepoint - 绩效点的明确性

linux - 一个一般的 linux 文件权限问题 : Apache and WordPress

java - 应用程序不请求获取权限

c# - 按多列对 C# 列表进行排序

c# - 在 SharePoint(自定义操作)或 C# 项目中获取货币汇率的最佳和最简单方法是什么

c# - 如何从 LambdaExpressions 创建的 MethodBuilders 创建可相互调用的 MethodInfos?

linux - 即使我在文件上使用 `/bin/cp` 和 chmod 777,bash 脚本中的复制也会失败