spring ACL を使用して、件名に対するいくつかのアクションのアクセス許可を構成できます。私のアプリケーションでは、サブジェクトへのアクセス権をカスタマイズする必要はほとんどありません。だから私はデフォルトの依存関係のためにACLを埋める必要はありませんが、ACLが空の場合は特別な指示が必要です.
たとえば、
branch1
|-doc1
|-doc2
|-doc3
branch2
|-doc1
|-doc2
|-doc3
user1 belongs to branch1
user2 belongs to branch2
デフォルトの実装では、 user1はbranch1のすべてのドキュメントにアクセスできる必要があります(ACL が空の場合)。user2 -> branch2 . 場合によっては、user1 に特別なアクセスが必要になります。彼はbranch2.doc3にアクセスする必要があり、 branch1.doc2に対する制限が必要です!
ACL 推奨事項と同様の方法でソリューションを実装しようとすると、対応するブランチの各ドキュメントに各ユーザーのアクセス許可を追加する必要があります。この方法は、正規化 && 許可のために非常に醜いです。したがって、相互参照のみに使用される ACL ロジックと、デフォルトのアクセス許可により、すべてのユーザーが同じブランチ内の各ドキュメントにアクセスできるようにするソリューションを実装したいと考えています...
デフォルトでは、@PostAuthorizeや@PreAuthorizeなどのメソッド アノテーションをhasRole、hasPermissionなどのチェックと共に使用できますが、パーミッションによる制限がロールよりも強い条件を構築したり、リレーション ユーザー ブランチに基づいてリクエストにフィルターを適用したりすることはできません。
このアイデアは実装できるはずですが、対応する説明や実装方法のトリックの例が見つかりませんでした...