From 0cdac4912abe926ad408505ad45bd115354994bf Mon Sep 17 00:00:00 2001 From: Luke Taylor Date: Sat, 27 Oct 2007 00:20:55 +0000 Subject: [PATCH] Changed to use a BeanReference when creating default login page to prevent duplication of filter bean. --- .../security/config/FormLoginBeanDefinitionParser.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 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 e103a4ce7e..fffadae86e 100644 --- a/core/src/main/java/org/springframework/security/config/FormLoginBeanDefinitionParser.java +++ b/core/src/main/java/org/springframework/security/config/FormLoginBeanDefinitionParser.java @@ -1,14 +1,16 @@ package org.springframework.security.config; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; -import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.security.ui.webapp.AuthenticationProcessingFilter; import org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint; import org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter; import org.springframework.util.StringUtils; + import org.w3c.dom.Element; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -22,7 +24,7 @@ public class FormLoginBeanDefinitionParser implements BeanDefinitionParser { public static final String DEFAULT_FORM_LOGIN_FILTER_ID = "_formLoginFilter"; public static final String DEFAULT_FORM_LOGIN_ENTRY_POINT_ID = "_formLoginEntryPoint"; - + private static final String LOGIN_URL_ATTRIBUTE = "loginUrl"; private static final String LOGIN_PAGE_ATTRIBUTE = "loginPage"; @@ -41,7 +43,6 @@ public class FormLoginBeanDefinitionParser implements BeanDefinitionParser { BeanDefinitionBuilder entryPointBuilder = BeanDefinitionBuilder.rootBeanDefinition(AuthenticationProcessingFilterEntryPoint.class); - String loginPage = elt.getAttribute(LOGIN_PAGE_ATTRIBUTE); // If no login page has been defined, add in the default page generator. @@ -50,7 +51,8 @@ public class FormLoginBeanDefinitionParser implements BeanDefinitionParser { "the 'loginPage' attribute to specify the URL of the login page."); loginPage = DefaultLoginPageGeneratingFilter.DEFAULT_LOGIN_PAGE_URL; RootBeanDefinition loginPageFilter = new RootBeanDefinition(DefaultLoginPageGeneratingFilter.class); - loginPageFilter.getConstructorArgumentValues().addGenericArgumentValue(filterBean); + loginPageFilter.getConstructorArgumentValues().addGenericArgumentValue( + new RuntimeBeanReference(DEFAULT_FORM_LOGIN_FILTER_ID)); parserContext.getRegistry().registerBeanDefinition("_springSecurityLoginPageFilter", loginPageFilter); }