web-dev-qa-db-ja.com

アクセス制御を尊重する検索ビューの構築

検索API検索API solr分類法アクセス制御 を使用してサイトに検索を実装しています。 ヘルプページ ノードアクセスセクションを読むと、次のようになります。

アクセス制御を尊重するビューを構築する方法の詳細が必要です。

…まさに私が必要とするものです。分類アクセス制御を適切に尊重して検索ビューを作成するにはどうすればよいですか?インデックス設定でノードアクセスをオンにしており、ビューフィルターで使用可能なフィールドが表示されているため、node_access_taxonomy_access_role:nが設定されているアイテムがいくつかあります。これをフィルターに掛けることはできますが、ファセットには影響しません。 。

私が持っています

結果エンティティに対する追加のアクセスチェック

一時的な手段としてクエリ設定でオンにしましたが、検索結果のみをフィルタリングし、ファセットなどはフィルタリングしていません。

1つの可能な(非効率的ですが)解決策は、2つのインデックスを作成し、検索ビューに2つのディスプレイを表示して、ユーザーが認証されているかどうかに応じて適切なインデックスを検索することですが、インデックスを制限する良い方法はありません割り当てられた分類用語に基づいています。

私の質問は検索ビューの境界を超えて、インデックス自体にまで及んでいるようです。

3
UltraBob

これを機能させることができましたが、主にビューでフィルタリングする対象を見つける明確な方法がなかったため、正確には簡単ではありませんでした。ヘルプページにコメントを書き込んだJon Pughに連絡するというアイデアを@Shawn Connに、そして迅速に私に答えてくれたJon Pughに感謝します。彼は私に答えをくれませんでしたが、自分が取り組んでいることに取り組み続ければ、ある程度の成功の可能性があると確信しました。

ステップ1:ノードアクセス情報にインデックスが作成されていることを確認する

Make sure Node Access is being indexed

ステップ2:フィールドをビューで利用できるようにする:

enter image description here

ステップ3:Solrでコアを開き、スキーマブラウザーでアクセスフィールドを見つけます: enter image description here

ステップ4:そのフィールドをクリックし、[期間情報をロード]をクリックして、Solrが取得しているアクセス期間データを確認します。

enter image description here

ステップ5:ビューで、ノードアクセスフィールドのフィルターを有効にし、ステップ4で見つけた値を使用してフィルターします。

enter image description here

その他の注意事項

この方法でフィルタリングすると、検索結果の数とファセットカウント/ファセットのすべてで正しい情報が得られます。 Shawn Connの回答のように、クエリが既に行われた後にアクセスのために結果をフィルターする別のオプションがあります。これにより、ファセットや検索情報ブロックなどに結果を提供することとは別に、リストがフィルター処理されるため、不正確な結果が提供されます。

2
UltraBob

[ビューの検索]モジュールには、インデックス化されたエンティティのアクセスチェックをさらに有効にするオプションがあり、これにより、分類アクセスコントロールの権限チェックが有効になります。

ビューUIの詳細設定>クエリ設定の下に設定リンクからアクセスできます。 結果エンティティの追加アクセスチェックチェックボックスで有効にします。注意点として、このオプションでは、インデックス時に権限チェックを行うことができないため、結果のカウント、ページネーション、およびその他の検索結果の詳細が奇妙に動作します。

2
Shawn Conn