クラス SecurityContextHolder
java.lang.ObjectSE
org.springframework.security.core.context.SecurityContextHolder
指定された
SecurityContext
を現在の実行スレッドに関連付けます。 このクラスは、SecurityContextHolderStrategy
のインスタンスに委譲する一連の静的メソッドを提供します。クラスの目的は、特定の JVM に使用する必要がある戦略を指定する便利な方法を提供することです。このクラスのすべてが static
であるため、これは JVM 全体の設定です。これにより、コードを簡単に呼び出すことができます。
使用する戦略を指定するには、モード設定を指定する必要があります。モード設定は、static final
フィールドとして定義された 3 つの有効な MODE_
設定の 1 つ、または引数なしの public コンストラクターを提供する SecurityContextHolderStrategy
の具体的な実装の完全修飾クラス名です。
目的の戦略モード String
を指定するには、2 つの方法があります。1 つは、SYSTEM_PROPERTY
にキー設定されたシステムプロパティを介して指定することです。2 つ目は、クラスを使用する前に setStrategyName(String)
を呼び出すことです。どちらのアプローチも使用しない場合、クラスはデフォルトで MODE_THREADLOCAL
を使用します。これは下位互換性があり、JVM の非互換性が少なく、サーバー上で適切です(MODE_GLOBAL
はサーバーの使用には明らかに不適切です)。
フィールドのサマリー
フィールドコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明static void
現在のスレッドからコンテキスト値を明示的にクリアします。static SecurityContext
新しい空のコンテキストの作成を構成済みの戦略に委譲します。static SecurityContext
現在のSecurityContext
を取得します。コンテキスト戦略を取得できます。static SupplierSE<SecurityContext>
現在のコンテキストを返すSupplier
SE を取得します。static int
主にトラブルシューティングの目的で、このメソッドは、クラスがSecurityContextHolderStrategy
を再初期化した回数を示します。static void
setContext
(SecurityContext context) 新しいSecurityContext
を現在の実行スレッドに関連付けます。static void
このSecurityContextHolderStrategy
を使用してください。static void
setDeferredContext
(SupplierSE<SecurityContext> deferredContext) 現在のコンテキストを返すSupplier
SE を設定します。static void
setStrategyName
(StringSE strategyName) 優先戦略を変更します。toString()
フィールドの詳細
コンストラクターの詳細
SecurityContextHolder
public SecurityContextHolder()
メソッドの詳細
clearContext
public static void clearContext()現在のスレッドからコンテキスト値を明示的にクリアします。getContext
現在のSecurityContext
を取得します。- 戻り値:
- セキュリティコンテキスト (非
null
)
getDeferredContext
現在のコンテキストを返すSupplier
SE を取得します。- 戻り値:
- 現在のコンテキストを返す
Supplier
SE (決してnull
- 必要に応じてデフォルトの実装を作成します) - 導入:
- 5.8
getInitializeCount
public static int getInitializeCount()主にトラブルシューティングの目的で、このメソッドは、クラスがSecurityContextHolderStrategy
を再初期化した回数を示します。- 戻り値:
- カウント(代替戦略に切り替えるために
setStrategyName(String)
またはsetContextHolderStrategy(SecurityContextHolderStrategy)
を呼び出していない限り、1 である必要があります)。
setContext
新しいSecurityContext
を現在の実行スレッドに関連付けます。- パラメーター:
context
- 新しいSecurityContext
(null
でない可能性があります)
setDeferredContext
現在のコンテキストを返すSupplier
SE を設定します。実装は、デフォルトをオーバーライドして、Supplier.get()
の呼び出しを回避できます。- パラメーター:
deferredContext
-SecurityContext
を返すSupplier
SE- 導入:
- 5.8
setStrategyName
優先戦略を変更します。特定の JVM に対してこのメソッドを複数回呼び出さないでください。このメソッドは、戦略を再初期化し、古い戦略を使用している既存のスレッドに悪影響を及ぼします。- パラメーター:
strategyName
- 使用する戦略の完全修飾クラス名。
setContextHolderStrategy
このSecurityContextHolderStrategy
を使用してください。setStrategyName(String)
またはこのメソッドのいずれかを呼び出しますが、両方を呼び出すことはできません。このメソッドはスレッドセーフではありません。リクエストの処理中に戦略を変更すると、競合状態が発生する可能性があります。SecurityContextHolder
は、提供されたSecurityContextHolderStrategy
への静的参照を維持します。これは、ストラテジーを削除するまで、ストラテジーとそのメンバーがガベージコレクションされないことを意味します。ガベージコレクションを確実に行うには、次のような元の戦略を覚えておいてください。SecurityContextHolderStrategy original = SecurityContextHolder.getContextHolderStrategy(); SecurityContextHolder.setContextHolderStrategy(myStrategy);
そして、myStrategy
をガベージコレクションする準備ができたら、次のことができます。SecurityContextHolder.setContextHolderStrategy(original);
- パラメーター:
strategy
- 使用するSecurityContextHolderStrategy
- 導入:
- 5.6
getContextHolderStrategy
コンテキスト戦略を取得できます。SEC-1188 を参照してください。- 戻り値:
- セキュリティコンテキストを格納するための構成済みの戦略
createEmptyContext
新しい空のコンテキストの作成を構成済みの戦略に委譲します。toString