クラス 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 はサーバーの使用には明らかに不適切です)。

    • コンストラクターの詳細

      • SecurityContextHolder

        public SecurityContextHolder()
    • メソッドの詳細

      • 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.ObjecttoString