Tidied up logic for setting token repository in RememberMeBeanDefinitionParser. Plus some tinkering with attributes in rnc file.
This commit is contained in:
+31
-16
@@ -21,10 +21,10 @@ import org.w3c.dom.Element;
|
||||
* @version $Id$
|
||||
*/
|
||||
public class RememberMeBeanDefinitionParser implements BeanDefinitionParser {
|
||||
protected final Log logger = LogFactory.getLog(getClass());
|
||||
protected final Log logger = LogFactory.getLog(getClass());
|
||||
|
||||
public static final String DEFAULT_REMEMBER_ME_FILTER_ID = "_rememberMeFilter";
|
||||
public static final String DEFAULT_REMEMBER_ME_SERVICES_ID = "_rememberMeServices";
|
||||
public static final String DEFAULT_REMEMBER_ME_SERVICES_ID = "_rememberMeServices";
|
||||
|
||||
public BeanDefinition parse(Element element, ParserContext parserContext) {
|
||||
BeanDefinition filter = new RootBeanDefinition(RememberMeProcessingFilter.class);
|
||||
@@ -34,24 +34,39 @@ public class RememberMeBeanDefinitionParser implements BeanDefinitionParser {
|
||||
new RuntimeBeanReference(ConfigUtils.DEFAULT_AUTH_MANAGER_ID));
|
||||
|
||||
String tokenRepository = element.getAttribute("tokenRepository");
|
||||
String dataSource = element.getAttribute("dataSource");
|
||||
String dataSource = element.getAttribute("dataSource");
|
||||
String key = element.getAttribute("key");
|
||||
|
||||
if (StringUtils.hasText(tokenRepository)) {
|
||||
if (StringUtils.hasText(dataSource)) {
|
||||
throw new SecurityConfigurationException("Specify tokenRepository or dataSource but not both");
|
||||
}
|
||||
boolean dataSourceSet = StringUtils.hasText(dataSource);
|
||||
boolean tokenRepoSet = StringUtils.hasText(tokenRepository);
|
||||
|
||||
services.getPropertyValues().addPropertyValue("tokenRepository", new RuntimeBeanReference(tokenRepository));
|
||||
|
||||
} else if (StringUtils.hasText(dataSource)) {
|
||||
BeanDefinition tokenRepo = new RootBeanDefinition(JdbcTokenRepositoryImpl.class);
|
||||
tokenRepo.getPropertyValues().addPropertyValue("dataSource", new RuntimeBeanReference(dataSource));
|
||||
} else {
|
||||
// Not persistent
|
||||
services = new RootBeanDefinition(TokenBasedRememberMeServices.class);
|
||||
if (dataSourceSet && tokenRepoSet) {
|
||||
throw new SecurityConfigurationException("Specify tokenRepository or dataSource but not both");
|
||||
}
|
||||
|
||||
boolean isPersistent = dataSourceSet | tokenRepoSet;
|
||||
|
||||
if (isPersistent) {
|
||||
Object tokenRepo;
|
||||
|
||||
if (tokenRepoSet) {
|
||||
tokenRepo = new RuntimeBeanReference(tokenRepository);
|
||||
} else {
|
||||
tokenRepo = new RootBeanDefinition(JdbcTokenRepositoryImpl.class);
|
||||
((BeanDefinition)tokenRepo).getPropertyValues().addPropertyValue("dataSource",
|
||||
new RuntimeBeanReference(dataSource));
|
||||
}
|
||||
services.getPropertyValues().addPropertyValue("tokenRepository", tokenRepo);
|
||||
} else {
|
||||
isPersistent = false;
|
||||
services = new RootBeanDefinition(TokenBasedRememberMeServices.class);
|
||||
}
|
||||
|
||||
if (StringUtils.hasText(key) && isPersistent) {
|
||||
logger.warn("The attribute 'key' ('" + key + "') is not required for persistent remember-me services and " +
|
||||
"will be ignored.");
|
||||
}
|
||||
|
||||
String key = element.getAttribute("key");
|
||||
services.getPropertyValues().addPropertyValue("key", key);
|
||||
|
||||
BeanDefinition authManager = ConfigUtils.registerProviderManagerIfNecessary(parserContext);
|
||||
|
||||
@@ -136,11 +136,10 @@ concurrent-sessions.attlist &=
|
||||
attribute exceptionIfMaximumExceeded {"true" | "false"}?
|
||||
|
||||
remember-me =
|
||||
element remember-me {remember-me.attlist}
|
||||
element remember-me {remember-me.attlist}
|
||||
|
||||
remember-me.attlist &=
|
||||
attribute key {xsd:string}
|
||||
remember-me.attlist &=
|
||||
(attribute tokenRepository {xsd:string} | attribute datasource {xsd:string})?
|
||||
(attribute key {xsd:string} | (attribute tokenRepository {xsd:string} | attribute datasource {xsd:string}))
|
||||
|
||||
authentication-provider =
|
||||
element authentication-provider {authentication-provider.attlist, (user-service | jdbc-user-service)}
|
||||
|
||||
@@ -248,7 +248,7 @@
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:attributeGroup name="remember-me.attlist">
|
||||
<xs:attribute name="key" use="required" type="xs:string"/>
|
||||
<xs:attribute name="key" type="xs:string"/>
|
||||
<xs:attribute name="tokenRepository" type="xs:string"/>
|
||||
<xs:attribute name="datasource" type="xs:string"/>
|
||||
</xs:attributeGroup>
|
||||
|
||||
Reference in New Issue
Block a user