Skip to content

Commit db7f52d

Browse files
Add hints to invoke SecurityContextImpl#getAuthentication
Closes gh-11987
1 parent 6026f9f commit db7f52d

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

core/src/main/java/org/springframework/security/aot/hint/CoreSecurityRuntimeHints.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.springframework.security.authentication.event.AuthenticationFailureProviderNotFoundEvent;
4242
import org.springframework.security.authentication.event.AuthenticationFailureProxyUntrustedEvent;
4343
import org.springframework.security.authentication.event.AuthenticationFailureServiceExceptionEvent;
44+
import org.springframework.security.core.context.SecurityContextImpl;
4445
import org.springframework.security.core.userdetails.UsernameNotFoundException;
4546
import org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl;
4647

@@ -59,6 +60,7 @@ public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
5960
registerMethodSecurityHints(hints);
6061
hints.resources().registerResourceBundle("org.springframework.security.messages");
6162
registerDefaultJdbcSchemaFileHint(hints);
63+
registerSecurityContextHints(hints);
6264
}
6365

6466
private void registerMethodSecurityHints(RuntimeHints hints) {
@@ -97,4 +99,9 @@ private void registerDefaultJdbcSchemaFileHint(RuntimeHints hints) {
9799
hints.resources().registerPattern(JdbcDaoImpl.DEFAULT_USER_SCHEMA_DDL_LOCATION);
98100
}
99101

102+
private void registerSecurityContextHints(RuntimeHints hints) {
103+
hints.reflection().registerType(SecurityContextImpl.class,
104+
(builder) -> builder.withMembers(MemberCategory.INVOKE_PUBLIC_METHODS));
105+
}
106+
100107
}

core/src/test/java/org/springframework/security/aot/hint/CoreSecurityRuntimeHintsTests.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.springframework.security.authentication.event.AuthenticationFailureProxyUntrustedEvent;
5050
import org.springframework.security.authentication.event.AuthenticationFailureServiceExceptionEvent;
5151
import org.springframework.security.core.AuthenticationException;
52+
import org.springframework.security.core.context.SecurityContextImpl;
5253
import org.springframework.security.core.userdetails.UsernameNotFoundException;
5354
import org.springframework.util.ClassUtils;
5455

@@ -137,4 +138,10 @@ void defaultJdbcSchemaFileHasHints() {
137138
.forResource("org/springframework/security/core/userdetails/jdbc/users.ddl")).accepts(this.hints);
138139
}
139140

141+
@Test
142+
void securityContextHasHints() {
143+
assertThat(RuntimeHintsPredicates.reflection().onType(SecurityContextImpl.class)
144+
.withMemberCategories(MemberCategory.INVOKE_PUBLIC_METHODS)).accepts(this.hints);
145+
}
146+
140147
}

0 commit comments

Comments
 (0)