クラス SecurityContextHolder
- java.lang.Object
-
- org.springframework.security.core.context.SecurityContextHolder
public class SecurityContextHolder extends java.lang.Object
指定された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 java.lang.String
MODE_GLOBAL
static java.lang.String
MODE_INHERITABLETHREADLOCAL
static java.lang.String
MODE_THREADLOCAL
static java.lang.String
SYSTEM_PROPERTY
コンストラクターのサマリー
コンストラクター コンストラクター 説明 SecurityContextHolder()
メソッドのサマリー
すべてのメソッド 静的メソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 static void
clearContext()
現在のスレッドからコンテキスト値を明示的にクリアします。static SecurityContext
createEmptyContext()
新しい空のコンテキストの作成を構成済みの戦略に委譲します。static SecurityContext
getContext()
現在のSecurityContext
を取得します。static SecurityContextHolderStrategy
getContextHolderStrategy()
コンテキスト戦略を取得できます。static int
getInitializeCount()
主にトラブルシューティングの目的で、このメソッドは、クラスがSecurityContextHolderStrategy
を再初期化した回数を示します。static void
setContext(SecurityContext context)
新しいSecurityContext
を現在の実行スレッドに関連付けます。static void
setContextHolderStrategy(SecurityContextHolderStrategy strategy)
このSecurityContextHolderStrategy
を使用してください。static void
setStrategyName(java.lang.String strategyName)
優先戦略を変更します。java.lang.String
toString()
フィールドの詳細
MODE_THREADLOCAL
public static final java.lang.String MODE_THREADLOCAL
- 関連事項:
- 定数フィールド値
MODE_INHERITABLETHREADLOCAL
public static final java.lang.String MODE_INHERITABLETHREADLOCAL
- 関連事項:
- 定数フィールド値
MODE_GLOBAL
public static final java.lang.String MODE_GLOBAL
- 関連事項:
- 定数フィールド値
SYSTEM_PROPERTY
public static final java.lang.String SYSTEM_PROPERTY
- 関連事項:
- 定数フィールド値
メソッドの詳細
clearContext
public static void clearContext()
現在のスレッドからコンテキスト値を明示的にクリアします。
getContext
public static SecurityContext getContext()
現在のSecurityContext
を取得します。- 戻り値:
- セキュリティコンテキスト (非
null
)
getInitializeCount
public static int getInitializeCount()
主にトラブルシューティングの目的で、このメソッドは、クラスがSecurityContextHolderStrategy
を再初期化した回数を示します。- 戻り値:
- カウント(代替戦略に切り替えるために
setStrategyName(String)
またはsetContextHolderStrategy(SecurityContextHolderStrategy)
を呼び出していない限り、1 である必要があります)。
setContext
public static void setContext(SecurityContext context)
新しいSecurityContext
を現在の実行スレッドに関連付けます。- パラメーター:
context
- 新しいSecurityContext
(null
でない可能性があります)
setStrategyName
public static void setStrategyName(java.lang.String strategyName)
優先戦略を変更します。特定の JVM に対してこのメソッドを複数回呼び出さないでください。このメソッドは、戦略を再初期化し、古い戦略を使用している既存のスレッドに悪影響を及ぼします。- パラメーター:
strategyName
- 使用する戦略の完全修飾クラス名。
setContextHolderStrategy
public static void setContextHolderStrategy(SecurityContextHolderStrategy strategy)
このSecurityContextHolderStrategy
を使用してください。setStrategyName(String)
またはこのメソッドのいずれかを呼び出しますが、両方を呼び出すことはできません。このメソッドはスレッドセーフではありません。リクエストの処理中に戦略を変更すると、競合状態が発生する可能性があります。SecurityContextHolder
は、提供されたSecurityContextHolderStrategy
への静的参照を維持します。これは、ストラテジーを削除するまで、ストラテジーとそのメンバーがガベージコレクションされないことを意味します。ガベージコレクションを確実に行うには、次のような元の戦略を覚えておいてください。SecurityContextHolderStrategy original = SecurityContextHolder.getContextHolderStrategy(); SecurityContextHolder.setContextHolderStrategy(myStrategy);
そして、myStrategy
をガベージコレクションする準備ができたら、次のことができます。SecurityContextHolder.setContextHolderStrategy(original);
- パラメーター:
strategy
- 使用するSecurityContextHolderStrategy
- 導入:
- 5.6
getContextHolderStrategy
public static SecurityContextHolderStrategy getContextHolderStrategy()
コンテキスト戦略を取得できます。SEC-1188 を参照してください。- 戻り値:
- セキュリティコンテキストを格納するための構成済みの戦略
createEmptyContext
public static SecurityContext createEmptyContext()
新しい空のコンテキストの作成を構成済みの戦略に委譲します。
toString
public java.lang.String toString()
- オーバーライド:
- クラス
java.lang.Object
のtoString