如何向共享点列表中的用户授予查看级别权限

时间:2018-12-04 08:04:47

标签: list sharepoint view permissions

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

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

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

能否请您详细说明您要实现的目标,即视图之间的区别是什么?

答案 1 :(得分:0)

已更新:

在这里您可以获得另一个很好的解决方案。
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 Task Scheduler在您公司的任何服务器上计划该控制台应用程序。

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

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

.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端点才能关闭对它们的访问。

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

尝试我所说的话。可能对您有帮助。