クラス TestSecurityContextHolder
java.lang.ObjectSE
org.springframework.security.test.context.TestSecurityContextHolder
TestSecurityContextHolder は SecurityContextHolder と非常に似ていますが、テストに必要です。例: Web ベースのテスト用に SecurityContextHolder に目的の SecurityContext を設定することはできません。Web リクエストでは、SecurityContextPersistenceFilter は SecurityContextHolder を SecurityContextRepository によって返される値でオーバーライドします。FilterChain の終了時に、SecurityContextPersistenceFilter は SecurityContextHolder をクリアします。つまり、複数の Web リクエストを行うと、後続のリクエストでどの SecurityContext を使用するかがわかりません。一般的な使用箇所は次のとおりです。- テストが実行される前に、
TestSecurityContextHolderにデータが入力されます。通常、これはWithSecurityContextTestExecutionListenerを使用して行われます - テストが実行されます。
MockMvcで使用する場合、通常はSecurityMockMvcRequestPostProcessors.testSecurityContext()で使用します。これにより、TestSecurityContextHolderからのSecurityContextが適切に設定されます。 - テストが実行された後、
TestSecurityContextHolderとSecurityContextHolderはクリアされます
- 導入:
- 4.0
方法の概要
修飾子と型メソッド説明static voidstatic SecurityContextTestSecurityContextHolderからSecurityContextを取得します。static voidsetAuthentication(Authentication authentication) 指定されたAuthenticationで新しいSecurityContextを作成します。static voidsetContext(SecurityContext context)
方法の詳細
clearContext
public static void clearContext()getContext
TestSecurityContextHolderからSecurityContextを取得します。setContext
- パラメーター:
context- 使用するSecurityContext
setAuthentication
指定されたAuthenticationを使用して新しいSecurityContextを作成します。SecurityContextはTestSecurityContextHolderとSecurityContextHolderに設定されています。- パラメーター:
authentication- 使用するAuthentication- 導入:
- 5.1.1