Skip to content

Commit f7e0f7f

Browse files
kse-musicjzheaux
authored andcommitted
Polish OneTimeTokenLoginConfigurer
Signed-off-by: DingHao <[email protected]>
1 parent fc19bf8 commit f7e0f7f

File tree

1 file changed

+21
-30
lines changed

1 file changed

+21
-30
lines changed

config/src/main/java/org/springframework/security/config/annotation/web/configurers/ott/OneTimeTokenLoginConfigurer.java

+21-30
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import java.util.Collections;
2020
import java.util.Map;
21-
import java.util.Objects;
2221

2322
import jakarta.servlet.http.HttpServletRequest;
2423

@@ -91,7 +90,7 @@ public OneTimeTokenLoginConfigurer(ApplicationContext context) {
9190

9291
@Override
9392
public void init(H http) {
94-
AuthenticationProvider authenticationProvider = getAuthenticationProvider(http);
93+
AuthenticationProvider authenticationProvider = getAuthenticationProvider();
9594
http.authenticationProvider(postProcess(authenticationProvider));
9695
configureDefaultLoginPage(http);
9796
}
@@ -138,17 +137,19 @@ private SecurityContextRepository getSecurityContextRepository(H http) {
138137
}
139138

140139
private void configureOttGenerateFilter(H http) {
141-
GenerateOneTimeTokenFilter generateFilter = new GenerateOneTimeTokenFilter(getOneTimeTokenService(http),
142-
getOneTimeTokenGenerationSuccessHandler(http));
140+
GenerateOneTimeTokenFilter generateFilter = new GenerateOneTimeTokenFilter(getOneTimeTokenService(),
141+
getOneTimeTokenGenerationSuccessHandler());
143142
generateFilter.setRequestMatcher(antMatcher(HttpMethod.POST, this.tokenGeneratingUrl));
144-
generateFilter.setRequestResolver(getGenerateRequestResolver(http));
143+
generateFilter.setRequestResolver(getGenerateRequestResolver());
145144
http.addFilter(postProcess(generateFilter));
146145
http.addFilter(DefaultResourcesFilter.css());
147146
}
148147

149-
private OneTimeTokenGenerationSuccessHandler getOneTimeTokenGenerationSuccessHandler(H http) {
148+
private OneTimeTokenGenerationSuccessHandler getOneTimeTokenGenerationSuccessHandler() {
150149
if (this.oneTimeTokenGenerationSuccessHandler == null) {
151-
this.oneTimeTokenGenerationSuccessHandler = getBeanOrNull(http, OneTimeTokenGenerationSuccessHandler.class);
150+
this.oneTimeTokenGenerationSuccessHandler = this.context
151+
.getBeanProvider(OneTimeTokenGenerationSuccessHandler.class)
152+
.getIfUnique();
152153
}
153154
if (this.oneTimeTokenGenerationSuccessHandler == null) {
154155
throw new IllegalStateException("""
@@ -170,12 +171,12 @@ private void configureSubmitPage(H http) {
170171
http.addFilter(postProcess(submitPage));
171172
}
172173

173-
private AuthenticationProvider getAuthenticationProvider(H http) {
174+
private AuthenticationProvider getAuthenticationProvider() {
174175
if (this.authenticationProvider != null) {
175176
return this.authenticationProvider;
176177
}
177-
UserDetailsService userDetailsService = getContext().getBean(UserDetailsService.class);
178-
this.authenticationProvider = new OneTimeTokenAuthenticationProvider(getOneTimeTokenService(http),
178+
UserDetailsService userDetailsService = this.context.getBean(UserDetailsService.class);
179+
this.authenticationProvider = new OneTimeTokenAuthenticationProvider(getOneTimeTokenService(),
179180
userDetailsService);
180181
return this.authenticationProvider;
181182
}
@@ -321,44 +322,34 @@ public OneTimeTokenLoginConfigurer<H> generateRequestResolver(GenerateOneTimeTok
321322
return this;
322323
}
323324

324-
private GenerateOneTimeTokenRequestResolver getGenerateRequestResolver(H http) {
325+
private GenerateOneTimeTokenRequestResolver getGenerateRequestResolver() {
325326
if (this.requestResolver != null) {
326327
return this.requestResolver;
327328
}
328-
GenerateOneTimeTokenRequestResolver bean = getBeanOrNull(http, GenerateOneTimeTokenRequestResolver.class);
329-
this.requestResolver = Objects.requireNonNullElseGet(bean, DefaultGenerateOneTimeTokenRequestResolver::new);
329+
this.requestResolver = this.context.getBeanProvider(GenerateOneTimeTokenRequestResolver.class)
330+
.getIfUnique(DefaultGenerateOneTimeTokenRequestResolver::new);
330331
return this.requestResolver;
331332
}
332333

333-
private OneTimeTokenService getOneTimeTokenService(H http) {
334+
private OneTimeTokenService getOneTimeTokenService() {
334335
if (this.oneTimeTokenService != null) {
335336
return this.oneTimeTokenService;
336337
}
337-
OneTimeTokenService bean = getBeanOrNull(http, OneTimeTokenService.class);
338-
if (bean != null) {
339-
this.oneTimeTokenService = bean;
340-
}
341-
else {
342-
this.oneTimeTokenService = new InMemoryOneTimeTokenService();
343-
}
338+
this.oneTimeTokenService = this.context.getBeanProvider(OneTimeTokenService.class)
339+
.getIfUnique(InMemoryOneTimeTokenService::new);
344340
return this.oneTimeTokenService;
345341
}
346342

347-
private <C> C getBeanOrNull(H http, Class<C> clazz) {
348-
ApplicationContext context = http.getSharedObject(ApplicationContext.class);
349-
if (context == null) {
350-
return null;
351-
}
352-
353-
return context.getBeanProvider(clazz).getIfUnique();
354-
}
355-
356343
private Map<String, String> hiddenInputs(HttpServletRequest request) {
357344
CsrfToken token = (CsrfToken) request.getAttribute(CsrfToken.class.getName());
358345
return (token != null) ? Collections.singletonMap(token.getParameterName(), token.getToken())
359346
: Collections.emptyMap();
360347
}
361348

349+
/**
350+
* @deprecated Use this.context instead
351+
*/
352+
@Deprecated
362353
public ApplicationContext getContext() {
363354
return this.context;
364355
}

0 commit comments

Comments
 (0)