【问题标题】:How to give View Level Permission to user in sharepoint List如何在共享点列表中向用户授予查看级别权限
【发布时间】:2018-12-06 03:56:58
【问题描述】:

我创建了具有 3 个视图(Ex.test1、test2、test3)的 SharePoint 自定义列表。 我想为 3 个用户分配 3 个视图,一个用户不应该有查看其他用户视图的权限。

任何帮助将不胜感激。

【问题讨论】:

    标签: list sharepoint view permissions


    【解决方案1】:

    据我所知,这根本不可能,即将视图分配给某个用户。您可以拥有“公共”视图(顾名思义,对有权访问列表的每个人都可见)和“个人”视图(仅对创建它们的用户可见,用户必须为此启用相关权限)。不能分享个人观点。

    此外,如果数据仅对某些用户可见而不对其他用户可见很重要,则用户可以通过简单地更改 URL 中项目视图中的 ID 来查看不在其视图中的项目,因此视图过滤不是一个好方法解决这个问题的方法。

    您能否详细说明您究竟想要达到什么目标,即观点等之间有什么区别?

    【讨论】:

      【解决方案2】:

      更新:

      在这里你可以得到另一个好的解决方案。
      https://sharepoint.stackexchange.com/questions/253723/restrict-list-view-to-role-sp-o365
      这是一个非常好的解决方案,因为您只需要管理员权限而无需代码。 您需要创建文件夹、中断角色继承并为文件夹添加权限。

      我的旧答案:

      根据我的经验,这取决于您对解决方案的期望、您的限制、您想要获得什么以及您可以牺牲什么以及在某些情况下您使用的 SharePoint 版本。

      注意:SharePoint 没有开箱即用的完全可自定义的列表项权限。

      我可以谈谈一些期望、一些细节、一些解决方案和变通方法以及如何实施。
      您可以尝试获得适用于您的东西:

      .1。您希望禁止用户查看其他用户的视图。但是:

      • 具有特定权限的用户可以创建自己的视图,因此他们可以创建包含来自其他不允许视图的所有字段和所有列表项数据的视图,
      • 用户可以从 REST API、JSOM API 和其他 SharePoint 开箱即用的 Web 服务获取有关列表项中所有字段和所有列表项的数据,
      • 用户可以打开任何列表项,将 URL 项 ID 更改为另一个,并查看来自其他列表项的任何数据。

      要实现这一点,您可以:

      .1.1。在每个用户下打开列表并创建自己的个人视图。
      仅针对个人用户显示的个人视图。

      .1.2。创建公共视图并设置其目标受众。
      打开视图页面 -> 在右上角单击齿轮图标 -> 编辑页面 -> 在页面上单击列表视图 Web 部件上的箭头图标 -> 编辑 Web 部件 -> 部分“高级” -> 字段“目标受众”。
      如果您没有此选项,请启用目标受众。
      列表设置 -> 受众群体定位设置 -> 启用受众群体定位。
      在访问群体中,您可以指定有权查看此 Web 部件的 SharePoint 用户或组。
      在这里您可以看到受众的不同用途以及如何在列表或库中启用它:
      https://support.office.com/en-us/article/target-content-to-specific-audiences-33d84cb6-14ed-4e53-a426-74c38ea32293

      .1.3。创建公共视图、打开其页面、编辑页面、删除列表视图 Web 部件、添加内容查询 Web 部件并设置其目标受众。
      在这里您可以看到有关目标受众的信息:
      https://support.office.com/en-us/article/target-content-to-specific-audiences-33d84cb6-14ed-4e53-a426-74c38ea32293
      但这不是我自己做的。

      .1.4。将 javacript 添加到列表视图页面。
      此 javascript 将检查用户权限并隐藏视图或将用户重定向到其他位置或执行其他操作。

      .2。用户无法看到其他用户从任何来源(任何列表视图、任何 API 和 Web 服务)创建的列表项。

      .2.1。 注意:这是有限的。用户只能阅读、编辑他创建的列表项。您不能将此应用于其他用户创建的列表项。
      为此,您可以:
      列表设置->“高级设置”部分->阻止“项目级权限”->“读取用户创建的项目”和“创建项目并编辑用户创建的项目”选项。

      .2.2。为具有不同权限的不同用户创建不同的列表。

      .2.3。 注意:这受 SharePoint 唯一权限限制。
      您可以创建在创建列表项时运行的 SharePoint 工作流。此工作流将中断列表项角色继承并通过某些条件为此项设置新权限。 这可能很好,但这里存在一些限制。 SharePoint 限制列表具有超过某些限制数量的列表项唯一权限。

      .2.4。我不知道 SharePoint 对此是否有一些限制,但您可以尝试,我不知道您是否可以从公共 API 执行此操作,但您可以尝试调查。
      您可以创建在创建列表项时运行的 SharePoint 工作流。此工作流将在列表项上设置目标受众。
      您可以在此处查看有关目标受众的信息:
      https://support.office.com/en-us/article/target-content-to-specific-audiences-33d84cb6-14ed-4e53-a426-74c38ea32293

      .2.5。如果您使用 SharePoint 本地版,则可以添加:

      .2.5.1。列出在列表项上运行的事件接收器 创建事件并执行以下操作:
      - 打破列表项角色继承并通过某些条件为该项目设置新权限

      - 在列表项上设置目标受众

      .2.5.2。在 SharePoint 管理中心中创建计时器作业、部署和安排它。
      此计时器作业将定期检查新创建的列表项,并且:
      - 打破列表项角色继承并通过某些条件为该项目设置新权限

      - 在列表项上设置目标受众

      .2.6。您可以创建连接到 SharePoint 的控制台应用程序(c# 语言),定期检查新创建的列表项,并且:
      - 打破列表项角色继承并通过某些条件为该项目设置新权限

      - 在列表项上设置目标受众。
      此控制台应用程序可以通过 Windows 任务计划程序安排在您公司的任何服务器上。

      .2.7。您可以编写连接到 SharePoint 的 Powershell 脚本,定期检查新创建的列表项,并且:
      - 打破列表项角色继承并通过某些条件为该项目设置新权限

      - 在列表项上设置目标受众。
      此 Powershell 脚本可以通过 Windows 任务计划程序安排在您公司的任何服务器上。

      .2.8。您可以创建连接到 SharePoint 的 Windows 服务(c# 语言),定期检查新创建的列表项,并且:
      - 打破列表项角色继承并通过某些条件为该项目设置新权限

      - 在列表项上设置目标受众。
      这个windows服务可以安装在贵公司的任何服务器上。

      .2.9。或许您可以在任何服务器中创建一些其他定期运行的代码(如工作流、控制台应用程序、PowerShell 脚本、Windows 服务)。
      此代码将:
      - 打破列表项角色继承并通过某些条件为该项目设置新权限

      - 在列表项上设置目标受众。
      我认为代码包装器不限于任何实现。


      我认为这种方式适用于很多情况。

      如果您想要更多可自定义的控件,或者您在实施中有一些限制,那么您可以通过多种方式创建许多解决方法。解决方法可以关闭许多权限漏洞,但可能不是所有漏洞:

      .1。您不希望用户可以从列表视图页面 UI 创建视图。
      您可以添加 javascript 来隐藏功能区、按钮或其他一些 UI 元素,以禁止用户创建自己的视图或切换到另一个用户视图。
      如果用户很聪明,他可以通过使用 REST API、JSOM 或 Web 服务来获取必要的列表项数据来避免这种情况。

      .2。您不希望用户可以看到任何列表项数据将 URL 列表项 ID 更改为另一个。

      .2.1。您可以在默认表单页面上添加一些 javascript。
      在新项目表单页面、显示项目表单页面和编辑项目表单页面上。
      此 javascript 将检查用户权限并隐藏数据或将用户重定向回列表视图页面或某处。

      .2.2。您可以创建 HttpModule 来拦截 Web 请求并检查用户权限,如果他没有权限,则将他重定向到另一个页面。
      必须将 HttpModule 添加到 IIS 和 SharePoint Web 配置中。

      .3。您可以尝试禁止使用 REST API、JSOM,但我没有这样做。
      我认为您可以将 HttpModule 添加到 IIS,它将拦截 Web 请求并检查用户权限并返回错误的请求 HTTP 状态代码和错误消息。
      但我还没有自己尝试过。
      在这里,您必须知道所有 API 端点才能关闭对它们的访问。

      这里可能存在许多其他不同的解决方法,但我现在不记得它们了。

      试试我所说的。可能对你有帮助。

      【讨论】:

        猜你喜欢
        • 2019-05-02
        • 2013-01-09
        • 1970-01-01
        • 1970-01-01
        • 2016-08-04
        • 1970-01-01
        • 1970-01-01
        • 2020-03-18
        • 1970-01-01
        相关资源
        最近更新 更多