如何通过外部内容类型过滤共享点搜索结果以进行安全调整?

问题描述

基本上,我有一个.NET应用程序,该应用程序使用Sharepoint Server 2016来存储和管理版本控制文件。所有其他数据(包括用户数据和权限)都存储在MS sql Server中。

内容搜寻和搜索索引正常工作,我使用关键字查询语言从Web服务检索搜索结果。它使用服务帐户连接到Sharepoint,因此搜索结果不是特定于用户的。

现在,我需要根据存储所有权限的表来修剪搜索结果。为简单起见,我定义了一个数据库视图,该视图由两列组成:FileId,PermittedUsers(一个包含对该文件具有权限的所有唯一用户名的字符串,例如'User1 User2 User3')

Sharepoint文档库除其他列外还包含FileId列。

我尝试过的事情:

  • 我将数据库视图定义为外部内容类型,并将其作为列添加到Sharepoint文档库。但是,Sharepoint似乎无法从行中“获取” FileId,将其传递到sql视图并检索相应的PermittedUsers字段。但是,我不想为此专门设置一列,因为这将意味着每个文档都会有一个新版本。
  • 检索搜索结果,然后通过代码过滤(=获取当前用户可以访问的所有文件,并删除不包含FileId的那些搜索结果)。这也不是一种选择,因为对于成千上万个文件用户而言,性能极差。

如何将权限信息连接到Sharepoint以便以高效的方式进行索引和检索?

如果文件已作为blob存储在sql Server中,那么我将执行对权限表的简单连接。如何在Sharepoint和sql Server之间达成相似的目标?

我对Sharepoint来说还很陌生,所以任何想法都会有所帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)