我已经创建了具有3个视图(例如,test1,test2,test3)的SharePoint自定义列表。 我想为3个用户分配3个视图,一个用户不应具有查看其他人的视图的权限。
任何帮助将不胜感激。
答案 0 :(得分:0)
据我所知,这是完全不可能的,即将视图分配给某个用户。您可以具有“公共”视图(对所有人均可见,顾名思义,可以访问该列表)和“个人”视图(仅对创建它们的用户可见,该用户必须为此启用相关权限)。个人观点无法共享。
此外,如果仅对某些用户而不对其他用户可见的数据很关键,则用户可以通过简单地更改URL中“项目视图”中的ID来查看其视图中不存在的项目,因此“视图”过滤不是一个好方法解决方法。
能否请您详细说明您要实现的目标,即视图之间的区别是什么?
答案 1 :(得分:0)
在这里您可以获得另一个很好的解决方案。
https://sharepoint.stackexchange.com/questions/253723/restrict-list-view-to-role-sp-o365
这是一个非常好的解决方案,因为您只需要管理员权限,而无需代码。
您需要创建文件夹,中断角色继承并添加文件夹权限。
根据我的经验,这取决于您对解决方案的期望,您的限制,想要获得的东西以及可以牺牲的东西以及在某些情况下使用的SharePoint版本。
注意:SharePoint没有现成的可完全自定义的列表项权限。
我可以说一些期望,一些细节,一些解决方案和解决方法以及如何实现这一目标。
您可以尝试获取适用于您的内容:
.1。您要禁止用户查看其他用户视图。但是:
要实现这一目标,您可以:
.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端点才能关闭对它们的访问。
可能存在许多其他不同的解决方法,但我现在不记得它们了。
尝试我所说的话。可能对您有帮助。