| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | .Explicit Saving of SecurityContext[tabs]======Java::+[source,java,role="primary"]----public SecurityFilterChain filterChain(HttpSecurity http) {	http		// ...		.securityContext((securityContext) -> securityContext			.requireExplicitSave(true)		);	return http.build();}----Kotlin::+[source,kotlin,role="secondary"]----@Beanopen fun springSecurity(http: HttpSecurity): SecurityFilterChain {    http {        securityContext {            requireExplicitSave = true        }    }    return http.build()}----XML::+[source,xml,role="secondary"]----<http security-context-explicit-save="true">	<!-- ... --></http>----======Upon using the configuration, it is important that any code that sets the `SecurityContextHolder` with a `SecurityContext` also saves the `SecurityContext` to the `SecurityContextRepository` if it should be persisted between requests.For example, the following code:.Setting `SecurityContextHolder` with `SecurityContextPersistenceFilter`[tabs]======Java::+[source,java,role="primary"]----SecurityContextHolder.setContext(securityContext);----Kotlin::+[source,kotlin,role="secondary"]----SecurityContextHolder.setContext(securityContext)----======should be replaced with.Setting `SecurityContextHolder` with `SecurityContextHolderFilter`[tabs]======Java::+[source,java,role="primary"]----SecurityContextHolder.setContext(securityContext);securityContextRepository.saveContext(securityContext, httpServletRequest, httpServletResponse);----Kotlin::+[source,kotlin,role="secondary"]----SecurityContextHolder.setContext(securityContext)securityContextRepository.saveContext(securityContext, httpServletRequest, httpServletResponse)----======
 |