最初に私の質問の背景。セキュリティ(別名パーミッション)とLucene - どのように?それはすべきか?
問題は、Luceneを導入し、一致するエンティティインスタンスのリストを単純に返す検索を実行することに関する。私のコードはエンティティを1つずつフィルタリングする必要があります。このアプローチは、ユーザが少数の少数しか見ることができない場合があり、多くをチェックしていくつかを返すことが理想的でない場合があるため、非常に非効率的である。
開発者はこの問題をどのように解決するか、どのように解決するのですか?Luceneを使用してインデックスや検索を実行することに留意してください。
EDIT
定義
- ユーザーは多くのグループに属していてもよいです。
- ロールには複数のグループが含まれている可能性があります。これらのグループは変更できます。
- 権限にはロールがあります(間接)。
- Xに読み取りアクセス権を設定できます。
- ロールの定義はいつでも変更できます。
インデックス
- 指標時グループ(Permmissionを拡張)のセットを追加すると、ロール変更のための部材群のリスト同期してなりつつ定義をもたらし得ます。
- パーミッション/ロールの定義が変更されるたびに、Xを再インデックスする必要がないようにしたいと考えています。
セキュリティチェック
- は、ユーザーがグループのセット内にあるグループに属している必要がありパーミッションチェックを渡すために与えられた許可のための役割に属しています。
おそらく、私たちは非常によく似たようなことをしました。インデックス付きオブジェクトは、メタデータフィールドの読み取り権限を持つグループid:sを持っています。 "G1、G6、G203"と "contains G1 or G70"また、別のプレフィックスを使用することによってユーザーにも拡張されます。 – Manne
私は同じアイデアを使用しています。私の具体的な実装は次のとおりです。http://lifeinide.blogspot.com/2013/02/lucene-permissions-and-hibernate-search.html –