検索の権限を使用する
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecoreコンテンツ検索を設定して、検索を実行するユーザーが読み取り権限を持っているアイテムのみを取得して表示することができます (パーミッションが有効な検索)。この機能は、Sitecoreクライアントで検索し、検索APIを使用してコードで検索クエリを作成するときに使用できます。
デフォルトでは、この機能はSitecoreクライアント (Sitecore UI) とsitecore_master_indexインデックスに対してのみ有効になっていますが、これは設定で変更できます。
アクセス許可が有効な検索を構成する
コンテンツ検索設定には、_readaccessという計算フィールドがあります。例えば、Solr検索プロバイダーの場合、このフィールドはSitecore/ContentSearch/ Sitecore.ContentSearch.Solr.DefaultIndexConfiguration.configファイルのcontentSearch/indexConfigurations/defaultSolrIndexConfiguration/documentOptionsノードにあります。
インデックス構成のEnableReadAccessIndexing設定では、次の2つのことを指定します。
-
Sitecoreがインデックスのsecurityフィールドにitem:readアクセス権を保存するかどうか。
-
_readaccessフィールドの句をクエリに追加できるかどうか。
EnableReadAccessIndexing設定の値がtrueの場合、これらのことは両方ともtrueです。値がfalseの場合、どちらもfalseであり、このインデックスでの検索にパーミッションは使用されません。
この機能は、デフォルトではsitecore_master_indexインデックスに対してのみ有効になっています。
Webサイトの検索にアクセス許可を使用するには:
-
sitecore_web_indexのenableReadAccessIndexing設定の値をtrueに変更します。
インデックス作成戦略では、権限が有効な検索を使用すると、securityフィールドの変更がチェックされます。
APIから検索するときにアクセス許可を使用する
インデックス作成方法は、セキュリティ・ドメイン構成の変更ではなく、コンテンツ・アイテムのsecurityフィールドの変更に対応します。したがって、セキュリティ・ドメインを変更する場合は、権限が有効な検索を使用するインデックスを再構築する必要があります。
アクセス許可が有効な検索を有効にする前に、セキュリティ構成を完了することをお勧めします。新しいユーザーをシステムに追加したり、ユーザーをロールに割り当てたりする場合は、アクセス権をユーザーに直接割り当てない限り、インデックスを更新する必要はありません。
いくつかのヘルパー メソッドを使用して、アクセス許可を考慮した検索クエリを作成できます。ヘルパーメソッドは、Sitecore.ContentSearch.Security.QueryableExtensionsクラスにあります。
ヘルパーメソッドを使用して、アクセス許可を考慮したクエリを作成するには、次のようにします。
-
IReadAccessSearchResultインターフェイスの実装。
ヘルパー メソッドを使用するシナリオは、1つのメソッド呼び出しを使用することです。methodパラメーターをオーバーライドすることはできません。
メソッド呼び出しをチェーンする場合 (例: query.WhereUserCanRead(userA).WhereUserCanRead(userB))、Sitecoreは両方のユーザーの検索結果をフィルタリングします。
IReadAccessSearchResultインターフェイス
IReadAccessSearchResultインターフェイスを使用して、検索クエリ結果を _readaccessフィールドの値に基づいてフィルタリングする必要があることを指定します。これには、ReadAccessという1つのプロパティがあります。このプロパティは、_readaccessインデックスフィールドと一致します。
カスタム検索結果の種類を使用し、ヘルパー メソッドが必要な場合は、カスタムの種類にIReadAccessSearchResultインターフェイスを実装する必要があります。
組み込みの検索結果タイプ ( SearchResultItemやUISearchResultItemなど) は、これらのインターフェイスを実装し、Sitecore.ContentSearch.Security.QueryableExtensionsクラスを使用してサポートします。
SearchSecurityOptionsプロパティ
APIを使用して検索クエリを作成する場合は、SearchSecurityOptionsプロパティを使用します。
SearchSecurityOptionsプロパティの値をEnableSecurityCheckに設定すると、Sitecoreはクライアント アプリケーションまたはAPIによって構築されたクエリに .WhereUserCanRead(Context.User) 拡張メソッドを自動的に適用します。つまり、次の2つのコード サンプルも同じことを行います。
そして
検索制限のオーバーライド
権限が有効な検索には、複数のロールを持つユーザーに対していくつかの制限があります。詳細については、「 アクセス許可が有効な検索で不完全な検索結果が返される可能性がある」を参照してください。