SEC-975: Namespace security syntax does not interpret properties
http://jira.springframework.org/browse/SEC-975. Changed creation of AccessDeniedHandler to use a BeanDefinition to make sure placeholders work OK.
This commit is contained in:
parent
5e4634d216
commit
4542f00b14
|
@ -273,8 +273,8 @@ public class HttpSecurityBeanDefinitionParser implements BeanDefinitionParser {
|
||||||
exceptionTranslationFilterBuilder.addPropertyValue("createSessionAllowed", new Boolean(allowSessionCreation));
|
exceptionTranslationFilterBuilder.addPropertyValue("createSessionAllowed", new Boolean(allowSessionCreation));
|
||||||
|
|
||||||
if (StringUtils.hasText(accessDeniedPage)) {
|
if (StringUtils.hasText(accessDeniedPage)) {
|
||||||
AccessDeniedHandlerImpl accessDeniedHandler = new AccessDeniedHandlerImpl();
|
BeanDefinition accessDeniedHandler = new RootBeanDefinition(AccessDeniedHandlerImpl.class);
|
||||||
accessDeniedHandler.setErrorPage(accessDeniedPage);
|
accessDeniedHandler.getPropertyValues().addPropertyValue("errorPage", accessDeniedPage);
|
||||||
exceptionTranslationFilterBuilder.addPropertyValue("accessDeniedHandler", accessDeniedHandler);
|
exceptionTranslationFilterBuilder.addPropertyValue("accessDeniedHandler", accessDeniedHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -267,7 +267,7 @@ public class HttpSecurityBeanDefinitionParserTests {
|
||||||
assertEquals("/access-denied", FieldUtils.getFieldValue(etf, "accessDeniedHandler.errorPage"));
|
assertEquals("/access-denied", FieldUtils.getFieldValue(etf, "accessDeniedHandler.errorPage"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected=BeanDefinitionStoreException.class)
|
@Test(expected=BeanCreationException.class)
|
||||||
public void invalidAccessDeniedUrlIsDetected() throws Exception {
|
public void invalidAccessDeniedUrlIsDetected() throws Exception {
|
||||||
setContext("<http auto-config='true' access-denied-page='noLeadingSlash'/>" + AUTH_PROVIDER_XML);
|
setContext("<http auto-config='true' access-denied-page='noLeadingSlash'/>" + AUTH_PROVIDER_XML);
|
||||||
}
|
}
|
||||||
|
@ -318,6 +318,16 @@ public class HttpSecurityBeanDefinitionParserTests {
|
||||||
assertEquals(Integer.valueOf(9443), pm.lookupHttpsPort(9080));
|
assertEquals(Integer.valueOf(9443), pm.lookupHttpsPort(9080));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void accessDeniedPageWorkWithPlaceholders() throws Exception {
|
||||||
|
System.setProperty("accessDenied", "/go-away");
|
||||||
|
setContext(
|
||||||
|
" <b:bean id='configurer' class='org.springframework.beans.factory.config.PropertyPlaceholderConfigurer'/>" +
|
||||||
|
" <http auto-config='true' access-denied-page='${accessDenied}'/>" + AUTH_PROVIDER_XML);
|
||||||
|
ExceptionTranslationFilter filter = (ExceptionTranslationFilter) appContext.getBean(BeanIds.EXCEPTION_TRANSLATION_FILTER);
|
||||||
|
assertEquals("/go-away", FieldUtils.getFieldValue(filter, "accessDeniedHandler.errorPage"));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void externalFiltersAreTreatedCorrectly() throws Exception {
|
public void externalFiltersAreTreatedCorrectly() throws Exception {
|
||||||
// Decorated user-filters should be added to stack. The others should be ignored.
|
// Decorated user-filters should be added to stack. The others should be ignored.
|
||||||
|
|
Loading…
Reference in New Issue