3

新しいエンティティを作成するときに、この新しいエンティティに ACL 権限 (別名 ACL エントリ) を付与したいと考えています。ここまでは簡単です:-)

この問題は、次のシナリオで発生します。

  • エンド ユーザーは、Web サイトで認証されなくてもエンティティを作成できます。
  • したがって、この新しいエンティティを永続化するサービスは、認証コンテキストなしで実行されます。
  • ただし、ACE を付与するには、アクティブな認証コンテキストが必要です。

Springは現在の認証を取得するためにJdbcMutableAclService使用SecurityContextHolder.getContext().getAuthentication()するため、この要件を回避する方法はないようです。

どんなアイデアでも大歓迎です!

4

1 に答える 1

2

自分で答えを見つけました:

Web アプリケーションには、常に認証コンテキストがあります。ユーザーが認証されていない場合、認証はorg.springframework.security.authentication.AnonymousAuthenticationToken単一の付与された権限を持つものです: ROLE_ANONYMOUS.

したがって、このユーザーに ACL を作成する権限を簡単に付与できます。PermissionGrantingStrategyこのロールを使用してリクエストを承認するように を設定するだけです。

于 2012-06-22T13:09:31.523 に答える