ソースを参照

Add UserDetailsResourceFactoryBean.fromString

Fixes gh-4568
Rob Winch 8 年 前
コミット
bc99f8aff3

+ 12 - 0
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);
+	}
 }

+ 7 - 0
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<UserDetails> users = factory.getObject();