SharePoint 2016 Search 定制开发简介系列七-Search Database with Security Trimming
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相关推荐
- python web开发项目 源码_Python + Flask 项目开发实践系列七
对于 Python + Flask 这种灵活的web开发框架,在前面的六个系列文章中详细的进行了说明,主要讲到了页面的首页加载时的页面渲染,增加功能,删除功能,修改功能,查询功能,查询详情功能等一些页 ...
- 使用SharePoint Designer定制开发专家库系统实例!
将近大半年都没有更新博客了,趁这段时间不忙,后续会继续分享一些技术和实际应用.对于Sharepoint的定制开发有很多种方式,对于一般的应用系统,可以使用Sharepoint本身自带的功能,如列表作为 ...
- 至2017年2月止SharePoint 2016 所有增加和更新内容。
至2017年2月止SharePoint 2016 所有增加和更新内容. 了解 SharePoint Server 2016 中的新功能以及对现有功能的更新. 对于 SharePoint 2013 和 ...
- 步步为营 SharePoint 开发学习笔记系列 七、SharePoint Timer Job 开发
概要 项目需求要求我们每天晚上同步员工的一些信息到sharepoint 的user List ,我们决定定制开发sharepoint timer Job,Sharepoint timer Job是sh ...
- SharePoint 2016 开发教程-杨建宇-专题视频课程
SharePoint 2016 开发教程-4213人已学习 课程介绍 此系列课程以SharePoint 2016为基础,介绍各种开发模型和对象的使用,通过一个个例子介绍如何使用vs深入 ...
- sharepoint 2016 学习系列篇(23)-文档库应用篇-(5)文档权限配置
学习了关于文档的上传,下载,以及属性标签的应用,朋友们估计也会想到,前面学习到了关于列表的数据权限配置, sharepoint 2016 学习系列篇(15)-自定义列表应用篇-(4)数据权限配置 那么 ...
- sharepoint 2016 学习系列篇(24)-文档库应用篇-(6)文档版本控制
学习到这里,相信朋友们,应该是对文档库有了大概的认识.回顾一下,前面学习了一个 sharepoint 2016 学习系列篇(17)-自定义列表应用篇-(6)开启列表数据版本控制 那么对于文档来说,文档 ...
- sharepoint 2016 学习系列篇(15)-自定义列表应用篇-(4)数据权限配置
当数据已经录入到列表中之后,接下来,朋友们可能会想知道,有些数据,只想给某些用户看到,或者编辑,列表是否支持这样的操作. 大微软的sharepoint平台,对于用户的需求,可以说是考虑得很周全的,权限 ...
- Web前端开发人员和设计师必读文章推荐【系列七】
这篇文章主要收录了十二月份发布在梦想天空的优秀文章,特别推荐给Web开发人员和设计师阅读.梦天空博客关注前端开发技术,展示最新 HTML5 和 CSS3 技术应用,分享实用的 jQuery 插件,推荐 ...
- springboot 插入返回id_Spring Boot实现分布式微服务开发实战系列(七)
今天已经进入第七讲了,整个微服务架构的搭建工作也基本完成.那到目前为止究竟使用了那些技术及实现了什么功能呢?我们先回顾一下. 使用的技术:SpringBoot.Dubbo.Zookeeper.Redi ...
最新文章
- java语言避免了大多数的什么_Java 语言避免了大多数的▁错误。( )_学小易找答案...
- 含类定义的完整python程序_Python——变量,运算,条件,循环
- 【Ubuntu】ubuntu物理机安装方法:U盘安装
- Xamarin.Android 使用ListView绑定数据
- 原生态Vim使用快捷键
- 使用 Flask-apidoc 自动生成 Api 文档
- fusion 360安装程序的多个实例正在同时运行。_阿里架构师实例讲解——Java多线程编程;详细的不能再详细了...
- 09.MyBatis的逆向工程
- Linux异步之信号(signal)机制分析
- python物理引擎模拟三体_一个物理引擎能不能模拟少量粒子之间的力?
- ThinkPHP6项目基操(8.多应用模式)
- sqlmap中的php,python - sqlmap源码中的一个问题
- DataGrid实现简单的行分组
- 马云:首批助力欧洲防疫的物资今天到达比利时
- 回文日期(NOIP2016 普及组第二题)
- phpnow修改默认站点根目录的方法
- PowerDesigner一些小技巧
- 前端测试框架Jest系列教程 -- Matchers(匹配器)
- 禅道的测试模块(编写用例)
- excel减法函数_Excel办公实操,提取多个条件的数据,办公必会技能
热门文章
- qq的云消息服务器,20 万台 QQ 服务器全面上云
- STM32与ARM7、ARM9、ARM11
- IE浏览器在地址栏针对param直接输入中文导致乱码的解决方案
- 1. 一文看懂奇异值分解
- 移动端统计分析工具Firebase、AppsFlyer、Adjust、Flurry、Tap stream、Kochava 、branch不完全对比分析
- linux读取文件头错误,Linux系统grub常见错误问题解决
- MQ,究竟如何做到削峰填谷?
- 未曾有光照耀的地方,皆是正雅齿科下一个战场
- 中景园2.4寸TFT显示屏取模方式
- 【密码学/密码分析】基于TMTO的密码分析方法