Search Database with Security Trimming

上一节咱们提到了SharePoint Search index connector的概念,通过编写不同的connector能够让SharePoint Search 关联不同的内容源,index connector需要告诉SharePoint 如何去爬取内容。上一节介绍的方式使用于Database的内容搜索,没有权限相关的需求场景,本节着重介绍如果Database中的内容在通过SharePoint搜索之前是有权限控制的,这个权限控制例如有一张或者多张关联表存放某个database记录对应的权限控制列表,类似有权限的人的字符串,比如csdn\test1,csdn\test2,csdn\test3...

为实现这一需求,SharePoint 端给出的解决方案是.NET Assembly Index Connector,通过实现对应的接口,告诉SharePoint Search Crawler在爬取内容的时候,如何去读取某一条item的值,如何去读取所有item的值,如何去处理item的权限ACL。

首先,需要创建一个Business Data Connectivity Model

VS 默认添加两个cs文件Entity1.cs以及Entity1Service.cs

其中Entity1.cs中定义的是搜索记录的每一条对象属性值

Entity1Service.cs中定义的是搜索方法实现,默认会有最基础的两个方法ReadItem和ReadList

其中ReadItem表示读取一条记录的逻辑实现,ReadList表示读取所有数据的逻辑实现,通过实现这两个方法就能够实现搜索Database中item的功能。

如果要实现权限控制的功能需要用到SharePoint Search中的ReadSecurityDescriptor 方法,该方法的实现逻辑是通过CommonSecurityDescriptor对象先移除所有人的访问权限,然后调用Database query查询有权限的用户,之后再通过CommonSecurityDescriptor对象给有权限的user加权限

这样就实现这个需求了。

具体配置可以参考:

https://social.technet.microsoft.com/wiki/contents/articles/22945.sharepoint-2010-custom-bcs-connector-for-search-with-security-trimming-batching-and-incremental-crawling.aspx

权限相关需要注意:

1. 针对每一个数据库记录,有权限的人需要是一个在当前域能找到的域账号,例如 domain\account的形式

2. incremental的逻辑需要自定义实现,通过实现GetChangedIds接口

SharePoint 2016 Search 定制开发简介系列七-Search Database with Security Trimming相关推荐

  1. python web开发项目 源码_Python + Flask 项目开发实践系列七

    对于 Python + Flask 这种灵活的web开发框架,在前面的六个系列文章中详细的进行了说明,主要讲到了页面的首页加载时的页面渲染,增加功能,删除功能,修改功能,查询功能,查询详情功能等一些页 ...

  2. 使用SharePoint Designer定制开发专家库系统实例!

    将近大半年都没有更新博客了,趁这段时间不忙,后续会继续分享一些技术和实际应用.对于Sharepoint的定制开发有很多种方式,对于一般的应用系统,可以使用Sharepoint本身自带的功能,如列表作为 ...

  3. 至2017年2月止SharePoint 2016 所有增加和更新内容。

    至2017年2月止SharePoint 2016 所有增加和更新内容. 了解 SharePoint Server 2016 中的新功能以及对现有功能的更新. 对于 SharePoint 2013 和 ...

  4. 步步为营 SharePoint 开发学习笔记系列 七、SharePoint Timer Job 开发

    概要 项目需求要求我们每天晚上同步员工的一些信息到sharepoint 的user List ,我们决定定制开发sharepoint timer Job,Sharepoint timer Job是sh ...

  5. SharePoint 2016 开发教程-杨建宇-专题视频课程

    SharePoint 2016 开发教程-4213人已学习 课程介绍         此系列课程以SharePoint 2016为基础,介绍各种开发模型和对象的使用,通过一个个例子介绍如何使用vs深入 ...

  6. sharepoint 2016 学习系列篇(23)-文档库应用篇-(5)文档权限配置

    学习了关于文档的上传,下载,以及属性标签的应用,朋友们估计也会想到,前面学习到了关于列表的数据权限配置, sharepoint 2016 学习系列篇(15)-自定义列表应用篇-(4)数据权限配置 那么 ...

  7. sharepoint 2016 学习系列篇(24)-文档库应用篇-(6)文档版本控制

    学习到这里,相信朋友们,应该是对文档库有了大概的认识.回顾一下,前面学习了一个 sharepoint 2016 学习系列篇(17)-自定义列表应用篇-(6)开启列表数据版本控制 那么对于文档来说,文档 ...

  8. sharepoint 2016 学习系列篇(15)-自定义列表应用篇-(4)数据权限配置

    当数据已经录入到列表中之后,接下来,朋友们可能会想知道,有些数据,只想给某些用户看到,或者编辑,列表是否支持这样的操作. 大微软的sharepoint平台,对于用户的需求,可以说是考虑得很周全的,权限 ...

  9. Web前端开发人员和设计师必读文章推荐【系列七】

    这篇文章主要收录了十二月份发布在梦想天空的优秀文章,特别推荐给Web开发人员和设计师阅读.梦天空博客关注前端开发技术,展示最新 HTML5 和 CSS3 技术应用,分享实用的 jQuery 插件,推荐 ...

  10. springboot 插入返回id_Spring Boot实现分布式微服务开发实战系列(七)

    今天已经进入第七讲了,整个微服务架构的搭建工作也基本完成.那到目前为止究竟使用了那些技术及实现了什么功能呢?我们先回顾一下. 使用的技术:SpringBoot.Dubbo.Zookeeper.Redi ...

最新文章

  1. java语言避免了大多数的什么_Java 语言避免了大多数的▁错误。( )_学小易找答案...
  2. 含类定义的完整python程序_Python——变量,运算,条件,循环
  3. 【Ubuntu】ubuntu物理机安装方法:U盘安装
  4. Xamarin.Android 使用ListView绑定数据
  5. 原生态Vim使用快捷键
  6. 使用 Flask-apidoc 自动生成 Api 文档
  7. fusion 360安装程序的多个实例正在同时运行。_阿里架构师实例讲解——Java多线程编程;详细的不能再详细了...
  8. 09.MyBatis的逆向工程
  9. Linux异步之信号(signal)机制分析
  10. python物理引擎模拟三体_一个物理引擎能不能模拟少量粒子之间的力?
  11. ThinkPHP6项目基操(8.多应用模式)
  12. sqlmap中的php,python - sqlmap源码中的一个问题
  13. DataGrid实现简单的行分组
  14. 马云:首批助力欧洲防疫的物资今天到达比利时
  15. 回文日期(NOIP2016 普及组第二题)
  16. phpnow修改默认站点根目录的方法
  17. PowerDesigner一些小技巧
  18. 前端测试框架Jest系列教程 -- Matchers(匹配器)
  19. 禅道的测试模块(编写用例)
  20. excel减法函数_Excel办公实操,提取多个条件的数据,办公必会技能

热门文章

  1. qq的云消息服务器,20 万台 QQ 服务器全面上云
  2. STM32与ARM7、ARM9、ARM11
  3. IE浏览器在地址栏针对param直接输入中文导致乱码的解决方案
  4. 1. 一文看懂奇异值分解
  5. 移动端统计分析工具Firebase、AppsFlyer、Adjust、Flurry、Tap stream、Kochava 、branch不完全对比分析
  6. linux读取文件头错误,Linux系统grub常见错误问题解决
  7. MQ,究竟如何做到削峰填谷?
  8. 未曾有光照耀的地方,皆是正雅齿科下一个战场
  9. 中景园2.4寸TFT显示屏取模方式
  10. 【密码学/密码分析】基于TMTO的密码分析方法