承認されたユーザーが更新を実行するための適切な権限を持っていることを確認するために、承認チェックでサービスレイヤーを保護しようとしているアプリケーションがあります。最初の単純なルールは、オブジェクトの所有者がオブジェクトを更新できるということです。そのため、セキュリティ チェックでは、ログインしているユーザーとオブジェクトの所有者が比較されます。残念ながら、AspectJ を使用してリポジトリ レベルのオブジェクトを生成する Neo4j グラフ データベースにオブジェクトが格納されているため、これは機能しません。@PreAuthorize で保護されたサービス レイヤーを持つアプリケーションをビルドしようとすると、AutoWire チェーンでは Neo4j リポジトリ オブジェクトを AutoWire できないというエラーが表示されます。 AspectJ は、使用するオブジェクトに組み込まれます。
Spring-Security 3.1.0 に更新してみました。aspectj-autoproxy を設定し、type="aspectj" 属性を global-method-security 定義に追加しようとしましたが、コンパイラは「type」を無効なプロパティとしてフラグ付けし、私はまだ自動配線の問題を抱えています。
モデルをもう少し見直した後、このアプローチは失敗する運命にあるのではないかと少し心配しています。さまざまなコントローラーやその他のビジネス ロジック ユニットがサービス レイヤーを直接呼び出すため、最終的にはスプリング セキュリティ プロキシ オブジェクトを完全にバイパスすることになると思います。
spring-security チェックで、AspectJ から自動生成された Neo4j リポジトリ オブジェクトをデータ リポジトリとして使用する方法はありますか?
spring-security を使用してサービス層を保護する方法はありますか? それとも、サービス層への直接呼び出しはセキュリティ層を完全にバイパスしますか?