Skip to content

Commit 0fea57d

Browse files
committed
Optimize SecurityReactorContextConfiguration
Issue gh-7422
1 parent 3670888 commit 0fea57d

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

config/src/main/java/org/springframework/security/config/annotation/web/configuration/SecurityReactorContextConfiguration.java

+17-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.springframework.context.annotation.Configuration;
2424
import org.springframework.security.core.Authentication;
2525
import org.springframework.security.core.context.SecurityContextHolder;
26-
import org.springframework.util.CollectionUtils;
2726
import org.springframework.web.context.request.RequestContextHolder;
2827
import org.springframework.web.context.request.ServletRequestAttributes;
2928
import reactor.core.CoreSubscriber;
@@ -70,7 +69,7 @@ public void afterPropertiesSet() throws Exception {
7069
Operators.liftPublisher((pub, sub) -> createSubscriberIfNecessary(sub));
7170

7271
Hooks.onLastOperator(SECURITY_REACTOR_CONTEXT_OPERATOR_KEY, pub -> {
73-
if (CollectionUtils.isEmpty(getContextAttributes())) {
72+
if (!contextAttributesAvailable()) {
7473
// No need to decorate so return original Publisher
7574
return pub;
7675
}
@@ -91,6 +90,22 @@ <T> CoreSubscriber<T> createSubscriberIfNecessary(CoreSubscriber<T> delegate) {
9190
return new SecurityReactorContextSubscriber<>(delegate, getContextAttributes());
9291
}
9392

93+
private static boolean contextAttributesAvailable() {
94+
HttpServletRequest servletRequest = null;
95+
HttpServletResponse servletResponse = null;
96+
ServletRequestAttributes requestAttributes =
97+
(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
98+
if (requestAttributes != null) {
99+
servletRequest = requestAttributes.getRequest();
100+
servletResponse = requestAttributes.getResponse();
101+
}
102+
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
103+
if (authentication != null || servletRequest != null || servletResponse != null) {
104+
return true;
105+
}
106+
return false;
107+
}
108+
94109
private static Map<Object, Object> getContextAttributes() {
95110
HttpServletRequest servletRequest = null;
96111
HttpServletResponse servletResponse = null;

0 commit comments

Comments
 (0)