クラス 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>現在のコンテキストを返すSupplierSE を取得します。static int主にトラブルシューティングの目的で、このメソッドは、クラスがSecurityContextHolderStrategyを再初期化した回数を示します。static voidsetContext(SecurityContext context) 新しいSecurityContextを現在の実行スレッドに関連付けます。static voidこのSecurityContextHolderStrategyを使用してください。static voidsetDeferredContext(SupplierSE<SecurityContext> deferredContext) 現在のコンテキストを返すSupplierSE を設定します。static voidsetStrategyName(StringSE strategyName) 優先戦略を変更します。toString()
フィールドの詳細
コンストラクターの詳細
SecurityContextHolder
public SecurityContextHolder()
メソッドの詳細
clearContext
public static void clearContext()現在のスレッドからコンテキスト値を明示的にクリアします。getContext
現在のSecurityContextを取得します。- 戻り値:
- セキュリティコンテキスト (非
null)
getDeferredContext
現在のコンテキストを返すSupplierSE を取得します。- 戻り値:
- 現在のコンテキストを返す
SupplierSE (決してnull- 必要に応じてデフォルトの実装を作成します) - 導入:
- 5.8
getInitializeCount
public static int getInitializeCount()主にトラブルシューティングの目的で、このメソッドは、クラスがSecurityContextHolderStrategyを再初期化した回数を示します。- 戻り値:
- カウント(代替戦略に切り替えるために
setStrategyName(String)またはsetContextHolderStrategy(SecurityContextHolderStrategy)を呼び出していない限り、1 である必要があります)。
setContext
新しいSecurityContextを現在の実行スレッドに関連付けます。- パラメーター:
context- 新しいSecurityContext(nullでない可能性があります)
setDeferredContext
現在のコンテキストを返すSupplierSE を設定します。実装は、デフォルトをオーバーライドして、Supplier.get()の呼び出しを回避できます。- パラメーター:
deferredContext-SecurityContextを返すSupplierSE- 導入:
- 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