演练:使用业务数据目录安全修整程序修整搜索结果

Microsoft Office SharePoint Server 2007 企业级搜索使用在爬网时获得的安全信息执行搜索结果的查询时安全修整。但是,可能会出现此修整不能满足要求的情况。例如,后端应用程序不能在爬网时提供安全信息;或者,您需要最新的安全信息,但在修整之前重新爬网不可行。为了解决此类情况,企业级搜索查询处理引擎提供了一个框架,用于插入动态查询时安全修整模块,在这些模块中,可以先对单个用户查询的特定结果进行安全修整,然后才在搜索结果中显示这些结果。

业务数据目录实现 CheckAccess 方法,以便为每个实体实例的安全修整提供内置支持,以及确保实体实例级别的安全性。

对于业务数据目录已编入索引的实体实例(搜索文档),业务数据目录安全修整程序允许在将它们返回给用户之前对它们进行自定义安全修整。此修整程序根据当前用户对后端数据的权限(使用后端应用程序中的逻辑来确定用户的权限),在执行时修整结果集(包含实体实例)。业务数据目录安全修整程序假定实际的后端应用程序将提供一个公共方法,用于检查当前用户对一个或多个实体实例的权限。此方法的输入参数应接受要检查的 EntityInstance 对象的 ID,而输出参数应返回作为对应的 long 整数数组(或可转换为 long 整数的某个值)的当前用户访问权。

如果可使用此类 API,则业务数据目录元数据的作者可以在应用程序定义文件中定义一个称为 AccessChecker 的 MethodInstanceType,并使用与映射 Finder、SpecificFinder 等时基本相同的方法将其映射到后端 API。在 AccessChecker 方法实例可用后,业务数据目录安全修整程序可以通过 CheckAccess 方法使用它来确定用户的权限。

每次查询引擎返回与业务数据目录安全修整程序所关联的爬网规则匹配的搜索结果时,业务数据目录安全修整程序都会执行 CheckAccess 方法。在调用 Entity.CheckAccess 方法时,业务数据目录会执行为该条目注册的 AccessChecker 方法实例所描述的后端 API。后端 API 返回当前用户对实体实例的权限。此信息会转传回 Entity.CheckAccess 方法,并最终传回安全修整程序,供其用于在将结果显示给用户之前修整结果。

本演练将引导您完成这些步骤:将 AccessChecker 方法实例添加到 AdventureWorksDW SQL Server 2005 示例、注册业务数据目录安全修整程序,以及将爬网规则和内容源添加到安全修整业务线 (LOB) 数据。

See Also

概念

演练:对搜索结果使用自定义安全修整程序

AccessChecker 示例