どのように設定したかによって異なります(別の動作を設定することもできます)。
SecurityContextPersistenceFilter
と対話するThreadLocalSecurityContextHolderStrategy
をWebアプリケーションで使用します。 SecurityContextPersistenceFilter
開始の
ジャワDOC:
が構成 から得られた情報を用いて、{@link SecurityContextHolderを}移入{@link SecurityContextRepository}前 要求とバック格納それをしますいったん要求が を完了し、コンテキスト の所有者を完了すると、 リポジトリ。デフォルトでは、HttpSessionSecurityContextRepository}を使用します。 詳細については、このクラスを参照してください。 HttpSession related 設定オプション。
ところで:HttpSessionSecurityContextRepository SecurityContextRepositoryの唯一の実装です(私はデフォルトのLIBSに発見した)
それは次のように動作します。
HttpSessionSecurityContextRepository
は(キー=」のHttpSessionを使用していますSPRING_SECURITY_CONTEXT ")を使用してSecurityContext
オブジェクトを格納します。
SecurityContextPersistenceFilter
は、SecurityContextRepository
、たとえばHttpSessionSecurityContextRepository
を使用してSecurityContext
オブジェクトをロードして格納するフィルタです。 HttpRequestのフィルタを通過した場合、フィルタは、リポジトリからSecurityContext
を取得し、SecurityContextHolder(SecurityContextHolder#setContext
)に入れて
SecurityContextHolder
は二つの方法setContext
とgetContext
を持っています。どちらも、SecurityContextHolderStrategy
を使用して、setおよびget-Contextメソッドで正確に何が行われたのかを指定します。例えば、ThreadLocalSecurityContextHolderStrategy
はスレッドを使用してコンテキストを格納します。
要約すると、ユーザープリンシパル(SecurityContextの要素)はHTTPセッションに格納されます。また、リクエストごとに、そのスレッドにアクセスする場所のスレッドに入れられます。