|
@@ -51,8 +51,9 @@ public class FormLoginBeanDefinitionParser implements BeanDefinitionParser {
|
|
}
|
|
}
|
|
|
|
|
|
ConfigUtils.registerProviderManagerIfNecessary(parserContext);
|
|
ConfigUtils.registerProviderManagerIfNecessary(parserContext);
|
|
|
|
+
|
|
|
|
+ RootBeanDefinition filterBean = createFilterBean(loginUrl, defaultTargetUrl, loginPage, authenticationFailureUrl);
|
|
|
|
|
|
- RootBeanDefinition filterBean = createFilterBean(loginUrl, defaultTargetUrl, authenticationFailureUrl);
|
|
|
|
filterBean.setSource(source);
|
|
filterBean.setSource(source);
|
|
filterBean.getPropertyValues().addPropertyValue("authenticationManager",
|
|
filterBean.getPropertyValues().addPropertyValue("authenticationManager",
|
|
new RuntimeBeanReference(BeanIds.AUTHENTICATION_MANAGER));
|
|
new RuntimeBeanReference(BeanIds.AUTHENTICATION_MANAGER));
|
|
@@ -82,7 +83,7 @@ public class FormLoginBeanDefinitionParser implements BeanDefinitionParser {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
- private RootBeanDefinition createFilterBean(String loginUrl, String defaultTargetUrl, String authenticationFailureUrl) {
|
|
|
|
|
|
+ private RootBeanDefinition createFilterBean(String loginUrl, String defaultTargetUrl, String loginPage, String authenticationFailureUrl) {
|
|
BeanDefinitionBuilder filterBuilder =
|
|
BeanDefinitionBuilder filterBuilder =
|
|
BeanDefinitionBuilder.rootBeanDefinition(AuthenticationProcessingFilter.class);
|
|
BeanDefinitionBuilder.rootBeanDefinition(AuthenticationProcessingFilter.class);
|
|
|
|
|
|
@@ -101,7 +102,12 @@ public class FormLoginBeanDefinitionParser implements BeanDefinitionParser {
|
|
filterBuilder.addPropertyValue("defaultTargetUrl", defaultTargetUrl);
|
|
filterBuilder.addPropertyValue("defaultTargetUrl", defaultTargetUrl);
|
|
|
|
|
|
if (!StringUtils.hasText(authenticationFailureUrl)) {
|
|
if (!StringUtils.hasText(authenticationFailureUrl)) {
|
|
- authenticationFailureUrl = DEF_FORM_LOGIN_AUTHENTICATION_FAILURE_URL;
|
|
|
|
|
|
+ // Fallback to redisplaying the custom login page, if one was specified
|
|
|
|
+ if (StringUtils.hasText(loginPage)) {
|
|
|
|
+ authenticationFailureUrl = loginPage;
|
|
|
|
+ } else {
|
|
|
|
+ authenticationFailureUrl = DEF_FORM_LOGIN_AUTHENTICATION_FAILURE_URL;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
filterBuilder.addPropertyValue("authenticationFailureUrl", authenticationFailureUrl);
|
|
filterBuilder.addPropertyValue("authenticationFailureUrl", authenticationFailureUrl);
|