AnonymousAuthenticationFilter should cache its Supplier<SecurityContext>

Closes gh-11900
This commit is contained in:
Evgeniy Cheban
2022-10-06 02:31:55 +02:00
committed by Steve Riesenberg
parent 5a55987d6e
commit 56b9badcfe
3 changed files with 47 additions and 7 deletions

View File

@@ -37,6 +37,7 @@ import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.context.SecurityContextHolderStrategy;
import org.springframework.util.Assert;
import org.springframework.util.function.SingletonSupplier;
import org.springframework.web.filter.GenericFilterBean;
/**
@@ -45,6 +46,7 @@ import org.springframework.web.filter.GenericFilterBean;
*
* @author Ben Alex
* @author Luke Taylor
* @author Evgeniy Cheban
*/
public class AnonymousAuthenticationFilter extends GenericFilterBean implements InitializingBean {
@@ -100,10 +102,10 @@ public class AnonymousAuthenticationFilter extends GenericFilterBean implements
private Supplier<SecurityContext> defaultWithAnonymous(HttpServletRequest request,
Supplier<SecurityContext> currentDeferredContext) {
return () -> {
return SingletonSupplier.of(() -> {
SecurityContext currentContext = currentDeferredContext.get();
return defaultWithAnonymous(request, currentContext);
};
});
}
private SecurityContext defaultWithAnonymous(HttpServletRequest request, SecurityContext currentContext) {