From bc99f8aff31173b13faa51b173d13063781c7a76 Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Fri, 22 Sep 2017 20:08:19 -0500 Subject: [PATCH] Add UserDetailsResourceFactoryBean.fromString Fixes gh-4568 --- .../userdetails/UserDetailsResourceFactoryBean.java | 12 ++++++++++++ .../UserDetailsResourceFactoryBeanTest.java | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/config/src/main/java/org/springframework/security/config/core/userdetails/UserDetailsResourceFactoryBean.java b/config/src/main/java/org/springframework/security/config/core/userdetails/UserDetailsResourceFactoryBean.java index 90f76d1904..041978707d 100644 --- a/config/src/main/java/org/springframework/security/config/core/userdetails/UserDetailsResourceFactoryBean.java +++ b/config/src/main/java/org/springframework/security/config/core/userdetails/UserDetailsResourceFactoryBean.java @@ -25,6 +25,7 @@ import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.memory.UserAttribute; import org.springframework.security.core.userdetails.memory.UserAttributeEditor; +import org.springframework.security.util.InMemoryResource; import org.springframework.util.Assert; import java.io.InputStream; @@ -151,4 +152,15 @@ public class UserDetailsResourceFactoryBean implements ResourceLoaderAware, Fact result.setResource(propertiesResource); return result; } + + /** + * Creates a UserDetailsResourceFactoryBean with a resource from the provided String + * + * @param users the string representing the users + * @return the UserDetailsResourceFactoryBean + */ + public static UserDetailsResourceFactoryBean fromString(String users) { + InMemoryResource resource = new InMemoryResource(users); + return fromResource(resource); + } } diff --git a/config/src/test/java/org/springframework/security/config/core/userdetails/UserDetailsResourceFactoryBeanTest.java b/config/src/test/java/org/springframework/security/config/core/userdetails/UserDetailsResourceFactoryBeanTest.java index c9fac4b277..f8e138e4aa 100644 --- a/config/src/test/java/org/springframework/security/config/core/userdetails/UserDetailsResourceFactoryBeanTest.java +++ b/config/src/test/java/org/springframework/security/config/core/userdetails/UserDetailsResourceFactoryBeanTest.java @@ -86,6 +86,13 @@ public class UserDetailsResourceFactoryBeanTest { .hasStackTraceContaining("invalidFormatHere"); } + @Test + public void getObjectWhenStringSingleUserThenGetsSingleUser() throws Exception { + this.factory = UserDetailsResourceFactoryBean.fromString("user=password,ROLE_USER"); + + assertLoaded(); + } + private void assertLoaded() throws Exception { Collection users = factory.getObject();