@ -246,22 +246,26 @@ public class HttpSecurityBeanDefinitionParser implements BeanDefinitionParser {
@@ -246,22 +246,26 @@ public class HttpSecurityBeanDefinitionParser implements BeanDefinitionParser {
final BeanDefinition logoutFilter = createLogoutFilter ( element , autoConfig , pc , rememberMeServicesId ) ;
BeanDefinition loginPageGenerationFilter = createLoginPageFilterIfNeeded ( form , openID ) ;
String formFilterId = null ;
String openIDFilterId = null ;
if ( form . filter ! = null ) {
// R equired by login page filter
pc . getRegistry ( ) . registerBeanDefinition ( BeanIds . FORM_LOGIN_FILTER , form . filter ) ;
pc . registerBeanComponent ( new BeanComponentDefinition ( form . filter , BeanIds . FORM_LOGIN_FILTER ) ) ;
// Id is r equired by login page filter
formFilterId = pc . getReaderContext ( ) . registerWithGeneratedName ( form . filter ) ;
pc . registerBeanComponent ( new BeanComponentDefinition ( form . filter , formFilterId ) ) ;
injectRememberMeServicesRef ( form . filter , rememberMeServicesId ) ;
}
if ( openID . filter ! = null ) {
// Required by login page filter
pc . getRegistry ( ) . registerBeanDefinition ( BeanIds . OPEN_ID_FILTER , openID . filter ) ;
pc . registerBeanComponent ( new BeanComponentDefinition ( openID . filter , BeanIds . OPEN_ID_FILTER ) ) ;
openIDFilterId = pc . getReaderContext ( ) . registerWithGeneratedName ( openID . filter ) ;
pc . getRegistry ( ) . registerBeanDefinition ( openIDFilterId , openID . filter ) ;
pc . registerBeanComponent ( new BeanComponentDefinition ( openID . filter , openIDFilterId ) ) ;
injectRememberMeServicesRef ( openID . filter , rememberMeServicesId ) ;
}
BeanDefinition loginPageGenerationFilter = createLoginPageFilterIfNeeded ( form , formFilterId , openID , openIDFilterId ) ;
String x509ProviderId = null ;
FilterAndEntryPoint x509 = createX509Filter ( element , pc , authenticationManager ) ;
@ -875,9 +879,8 @@ public class HttpSecurityBeanDefinitionParser implements BeanDefinitionParser {
@@ -875,9 +879,8 @@ public class HttpSecurityBeanDefinitionParser implements BeanDefinitionParser {
String accessManagerId = element . getAttribute ( ATT_ACCESS_MGR ) ;
if ( ! StringUtils . hasText ( accessManagerId ) ) {
pc . getRegistry ( ) . registerBeanDefinition ( BeanIds . WEB_ACCESS_MANAGER , accessDecisionMgr ) ;
pc . registerBeanComponent ( new BeanComponentDefinition ( accessDecisionMgr , BeanIds . WEB_ACCESS_MANAGER ) ) ;
accessManagerId = BeanIds . WEB_ACCESS_MANAGER ;
accessManagerId = pc . getReaderContext ( ) . registerWithGeneratedName ( accessDecisionMgr ) ;
pc . registerBeanComponent ( new BeanComponentDefinition ( accessDecisionMgr , accessManagerId ) ) ;
}
BeanDefinitionBuilder builder = BeanDefinitionBuilder . rootBeanDefinition ( FilterSecurityInterceptor . class ) ;
@ -1099,7 +1102,7 @@ public class HttpSecurityBeanDefinitionParser implements BeanDefinitionParser {
@@ -1099,7 +1102,7 @@ public class HttpSecurityBeanDefinitionParser implements BeanDefinitionParser {
}
BeanDefinition createLoginPageFilterIfNeeded ( FilterAndEntryPoint form , FilterAndEntryPoint openID ) {
BeanDefinition createLoginPageFilterIfNeeded ( FilterAndEntryPoint form , String formFilterId , FilterAndEntryPoint openID , String openIDFilterId ) {
boolean needLoginPage = form . filter ! = null | | openID . filter ! = null ;
String formLoginPage = getLoginFormUrl ( form . entryPoint ) ;
// If the login URL is the default one, then it is assumed not to have been set explicitly
@ -1116,11 +1119,11 @@ public class HttpSecurityBeanDefinitionParser implements BeanDefinitionParser {
@@ -1116,11 +1119,11 @@ public class HttpSecurityBeanDefinitionParser implements BeanDefinitionParser {
BeanDefinitionBuilder . rootBeanDefinition ( DefaultLoginPageGeneratingFilter . class ) ;
if ( form . filter ! = null ) {
loginPageFilter . addConstructorArgValue ( new RuntimeBean Reference ( BeanIds . FORM_LOGIN_FILTER ) ) ;
loginPageFilter . addConstructorArgReference ( formFilterId ) ;
}
if ( openID . filter ! = null ) {
loginPageFilter . addConstructorArgValue ( new RuntimeBean Reference ( BeanIds . OPEN_ID_FILTER ) ) ;
loginPageFilter . addConstructorArgReference ( openIDFilterId ) ;
}
return loginPageFilter . getBeanDefinition ( ) ;