From c65ec2aa387c4dc4db31a5fb290ac0bedcd4f171 Mon Sep 17 00:00:00 2001 From: Ben Alex Date: Tue, 12 Feb 2008 17:40:49 +0000 Subject: [PATCH] Make authentication-failure-url attribute optional. --- .../config/FormLoginBeanDefinitionParser.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/springframework/security/config/FormLoginBeanDefinitionParser.java b/core/src/main/java/org/springframework/security/config/FormLoginBeanDefinitionParser.java index 6d1d47fe03..ef59b6a420 100644 --- a/core/src/main/java/org/springframework/security/config/FormLoginBeanDefinitionParser.java +++ b/core/src/main/java/org/springframework/security/config/FormLoginBeanDefinitionParser.java @@ -51,8 +51,9 @@ public class FormLoginBeanDefinitionParser implements BeanDefinitionParser { } ConfigUtils.registerProviderManagerIfNecessary(parserContext); + + RootBeanDefinition filterBean = createFilterBean(loginUrl, defaultTargetUrl, loginPage, authenticationFailureUrl); - RootBeanDefinition filterBean = createFilterBean(loginUrl, defaultTargetUrl, authenticationFailureUrl); filterBean.setSource(source); filterBean.getPropertyValues().addPropertyValue("authenticationManager", new RuntimeBeanReference(BeanIds.AUTHENTICATION_MANAGER)); @@ -82,7 +83,7 @@ public class FormLoginBeanDefinitionParser implements BeanDefinitionParser { 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.rootBeanDefinition(AuthenticationProcessingFilter.class); @@ -101,7 +102,12 @@ public class FormLoginBeanDefinitionParser implements BeanDefinitionParser { filterBuilder.addPropertyValue("defaultTargetUrl", defaultTargetUrl); 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);