Etapa 3 (opcional): especifica um limite configuráveis em número de URLs de rastreamento selecionado
Esta explicação passo a passo descreve como criar, implantar e registrar um personalizado trimmer de segurança para Pesquisa da empresa no Microsoft Office do SharePoint Server 2007 usando Microsoft Visual Studio 2005.
Quando você registrar um personalizado trimmer de segurança com o utilitário stsadm, você pode especificar opcional propriedades configuração com a operação **** registersecuritytrimmer. Isso oferece suporte ao criar um personalizado trimmer de segurança com configurável configurações.
De exemplo, você poderia criar um personalizado trimmer de segurança com um configurável limite sobre o número de itens verificados pela trimmer de segurança. Embora isso seja opcional, recomendamos que você incluir algum tipo de limite em seu personalizado implementação trimmer de segurança. Para obter mais informações, consulte Trimming de segurança personalizado para Visão geral de resultados de pesquisa da empresa.
Etapa 3 descreve como criar e registrar um personalizado trimmer de segurança com um configurável limite sobre o número de documentos verificada e inclui o seguinte tarefas:
Codificação de personalizado trimmer de segurança
Registrando o personalizado trimmer de segurança
O personalizado trimmer de segurança descrito neste exemplo é semelhante a daquele descrito Etapa 1: Criar a Trimmer de segurança personalizado e Etapa 2: implantar e registrar a Trimmer de segurança personalizado. Nesta personalizado trimmer de segurança, no entanto, nós incluem etapas adicionais para definir um limite na implementação e alteração de utilitário stsadm comando você usar para registrar o personalizado trimmer de segurança.
Codificação de Trimmer de segurança personalizado
Antes de iniciar a tarefa descrita aqui, criar o projeto **** CustomSecurityTrimmer e modificar o CustomSecurityTrimmer CustomSecurityTrimmer classe, conforme descrito em Etapa 1: Criar a Trimmer de segurança personalizado.
Dica
Este tópico não repita as etapas já especificadas na etapa 1 e 2; Ele apenas descreve as tarefas que são diferentes.Para obter informações das etapas anteriores, consulte Etapa 1: Criar a Trimmer de segurança personalizado e Etapa 2: implantar e registrar a Trimmer de segurança personalizado.
Para codificar o personalizado trimmer de segurança
Depois de modificar o declaração de classe para implementar o ISecurityTrimmer T:Microsoft.Office.Server.Search.Query.ISecurityTrimmer interface, declare uma variável para o valor limite, da seguinte maneira.
class CustomSecurityTrimmer : ISecurityTrimmer { /* Sets a default limit of 200. You can change this to a value that meets your specific requirements. */ private int intCheckLimit = 200;
Criar um método para comparar o número de itens verificados para o limite configurado, adicionar o seguinte codificar.
private bool CheckLimit(IDictionary<String, Object> sessionProperties, int numChecks) { Object currentCount; sessionProperties.TryGetValue("currentCheckCount", out currentCount); if (currentCount == null) { sessionProperties["currentCheckCount"] = numChecks; return (true); } int currentCountInt = Convert.ToInt32(currentCount); currentCountInt += numChecks; sessionProperties["currentCheckCount"] = currentCountInt; if (currentCountInt <= intCheckLimit) { return true; } else { return false; } }
Para completo a codificar para o personalizado exemplo trimmer de segurança, você deve modificar o Initialize e M:Microsoft.Office.Server.Search.Query.ISecurityTrimmer.CheckAccess CheckAccess implementações método descritas em Etapa 1: Criar a Trimmer de segurança personalizado.
Para modificar implementações método interface ISecurityTrimmer
Adicione o seguinte codificar para o Initialize método M:Microsoft.Office.Server.Search.Query.ISecurityTrimmer.Initialize.
if (trimmerProps["CheckLimitProperty"] != null) { intCheckLimit = Convert.ToInt32(trimmerProps["CheckLimitProperty"]); }
Este codificar define o limite para o número máximo de documentos que trimmer a segurança será verificar para o valor de um configuração propriedade nomeado CheckLimitProperty.
Dica
Você pode especificar propriedades configuração quando você registrar a trimmer de segurança.
Adicione o seguinte codificar para o CheckAccess M:Microsoft.Office.Server.Search.Query.ISecurityTrimmer.CheckAccess, imediatamente após a declaração método.
if (!this.CheckLimit(sessionProperties, crawlURLs.Count)) { throw (new PluggableAccessCheckException("<Display Message>")); }
Este codificar chama o CheckLimit método CheckLimit. Se o limite for atingido, este método retornará false. Quando isso ocorre, um PluggableAccessCheckException T:Microsoft.Office.Server.Search.Query.PluggableAccessCheckException exceção é disparado e o texto especificado no PluggableAccessCheckException PluggableAccessCheckException construtor ? em vez dos resultados da pesquisa ? é exibido na interface usuário de resultados de pesquisa.
Registrando o Trimmer de segurança personalizado
Antes de iniciar esta etapa, você deve implantar CustomSecurityTrimmerSample.dll para o cache global de assemblies, como descrito em Etapa 2: implantar e registrar a Trimmer de segurança personalizado. Em seguida, você pode registrar o personalizado trimmer de segurança usando o utilitário stsadm Stsadm.
O seguinte procedimento mostra como registrar um personalizado trimmer com a identificação de segurança definido como 1 para o SharedServices1 do provedor de serviços compartilhados (SSP), que é aplicado ao de conteúdo localizado no arquivo compartilhamentos para um servidor nomeado Servidordearquivos1 . Ele também define o valor das configurações CheckLimitProperty CheckLimitProperty para 300.
Para registrar o personalizado trimmer de segurança com a configurações CheckLimitProperty
No prompt de comando, digite o seguinte comando.
stsadm -o registersecuritytrimmer -ssp SharedServices1 -id 1 -typeName "CustomSecurityTrimmerSample.clsCustomSecurityTrimmer, CustomSecurityTrimmerSample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=<token>" -rulepath file://FileServer1/* -configprops CheckLimitProperty~300
Exemplo
Este é o completo codificar exemplo para a classe CustomSecurityTrimmerSample CustomSecurityTrimmerSample descrito esta etapa.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server.Search.Query;
using Microsoft.Office.Server.Search.Administration;
//For Windows Authentication
using System.Security.Principal;
//For Forms Authenticaion
using System.Web;
using System.Collections.Specialized;
using System.Collections;
namespace CustomSecurityTrimmerSample
{
class CustomSecurityTrimmer : ISecurityTrimmer
{
private int intCheckLimit = 200;
public void Initialize(NameValueCollection trimmerProps, SearchContext searchCxt)
{
if (trimmerProps["CheckLimit"] != null)
{
intCheckLimit = Convert.ToInt32(trimmerProps["CheckLimit"]);
}
}
public BitArray CheckAccess(IList<String> crawlURLs, IDictionary<String, Object> sessionProperties)
{
BitArray retArray = new BitArray(crawlURLs.Count);
if (!this.CheckLimit(sessionProperties, crawlURLs.Count))
{
throw (new PluggableAccessCheckException("Reached Limit"));
}
//For Windows authentication, uncomment the next line:
//string strUser = WindowsIdentity.GetCurrent().Name;
//For Forms authentication, uncomment the next line:
//string strUser = HttpContext.Current.User.Identity.Name;
for (int x = 0; x < crawlURLs.Count; x++)
{
/*
Add code here to check if
strUser can access crawlURLs[x].
If so:
retArray[x] = true;
If not:
retArray[x] = false;
*/
}
return retArray;
}
private bool CheckLimit(IDictionary<String, Object> sessionProperties, int numChecks)
{
Object currentCount;
sessionProperties.TryGetValue("currentCheckCount", out currentCount);
if (currentCount == null)
{
sessionProperties["currentCheckCount"] = numChecks;
return (true);
}
int currentCountInt = Convert.ToInt32(currentCount);
currentCountInt += numChecks;
sessionProperties["currentCheckCount"] = currentCountInt;
if (currentCountInt <= intCheckLimit)
{
return true;
}
else
{
return false;
}
}
}
}
Consulte também
Referência
Microsoft.Office.Server.Search.Query.ISecurityTrimmer
Microsoft.Office.Server.Search.Query.PluggableAccessCheckException
Outros recursos
Trimming de segurança personalizado para Visão geral de resultados de pesquisa da empresa
Walkthrough: usando um Trimmer de segurança personalizado para resultados da pesquisa
Etapa 1: Criar a Trimmer de segurança personalizado
Etapa 2: implantar e registrar a Trimmer de segurança personalizado