2

Apache Shiro (以前の JSecurity) を使用して実装した、かなり高度なセキュリティ メカニズムがあります。オブジェクトの正確な可視性ルールを知るために、いくつかのコードを実行する必要があります (つまり、ユーザーの役割、権限、グループなどを検索します)。現在のユーザーが表示を許可されているオブジェクトを教えてくれるクエリを実行したいと思います。

休止状態フィルターを使用すると、オブジェクト/クエリにフィルターを適用できることがわかりました。これは、ここで使用できるようです。

ただし、私が見つけた例はデータベースに集中しているようです (つまり、フィールド/列 isVisible があり、true に設定されている場合は常にフィルターをかけます)。一部のコードを休止状態フィルターとして実行する方法はありますか、それともすべてのクエリに小さな WHERE 句を追加する薄いレイヤーにすぎませんか。

私は実際にこれを Grails / GORM インフラストラクチャ内で使用しているため、有効な他のソリューションがいくつかある可能性があります。ハイバネート フィルタを統合するプラグインは存在しますが、ハイバネート フィルタリング プロセスの一部として実行するコードで使用できない限り、ここではあまり役に立ちません。

4

1 に答える 1

2

残念ながら、Hibernate フィルターでは問題は解決しません。それらは非常に便利ですが、すべてのフェッチに小さな WHERE 句を追加するのはまさに薄いレイヤーです。

Grails を使用しているので、AOP が探しているものを提供してくれることに気付くかもしれません。これを見てください: http://www.infoq.com/articles/aop-with-groovy

幸運を。

于 2009-11-05T18:38:52.083 に答える