2010-11-05 6 views
0

J'ai un certain nombre de rôles différents dans Sitecore. Et j'ai défini des autorisations de sécurité sur mes éléments de contenu afin que les différents rôles puissent uniquement accéder à certains éléments de contenu. Il semble que Lucene va simplement indexer tout le contenu. Et quand je interroge Lucene, il ne fait pas attention à la sécurité. Existe-t-il un moyen pour que Lucene ne renvoie que les éléments auxquels l'utilisateur extranet actuel a accès?Comment puis-je configurer un index Lucene dans Sitecore qui gère correctement la sécurité?

Merci, Corey

Répondre

3

Pas à ma connaissance. Mais lorsque l'on travaille dans la collection Hits, vous auriez normalement une boucle semblable à ceci:

for (int i = 0; i < hits.Length() && i < Context.Current.Settings.MaxSearchResultsToProcess; i++) 
{ 
    Item item = Index.GetItem(hits.Doc(i), Context.Current.Database); 
    if (item != null) 
    { 
     indexResultater.Add(item); 
    } 
} 

Et puisque cela va dans le contexte de votre utilisateur actuel, aucun résultat seront ajoutés à vos résultats si l'utilisateur ne peut pas y accéder .

+0

En fait, dans mon code, je le fais un peu différemment. Au lieu d'itérer à travers des milliers de résultats, je ne fais que parcourir la page actuelle des éléments. Donc, si ma recherche renvoyait 1 475 hits et que j'étais à la page 2 du jeu de résultats, je ne tirerais que des coups 11-20. Cependant, je suppose que je pourrais essayer comme vous l'avez suggéré. Cela signifie simplement que je devrais toujours parcourir tous les 1 475 résultats et obtenir seulement ceux auxquels j'ai accès. Ensuite, après cela, je pourrais juste retourner les articles 11-20. J'espère que ce ne sera pas trop lent. –

+0

En réalité, ce n'est généralement pas trop mal. Un certain nombre de choses que vous pouvez considérer, ne renvoie pas plus de résultats YYY de toute façon d'une recherche. 1475 serait ce que je considère comme trop, je ne demande jamais à Lucene de traiter plus de 200 à 300 résultats pour une requête donnée. Le cache d'éléments de Sitecore vous aidera (beaucoup) pour les demandes de pages suivantes, et finalement vous avez la possibilité de mettre en cache le résultat pour la navigation de page. –

Questions connexes