Add UserDetailsResourceFactoryBean.fromString

Fixes gh-4568
This commit is contained in:
Rob Winch 2017-09-22 20:08:19 -05:00
parent b59265c641
commit bc99f8aff3
2 changed files with 19 additions and 0 deletions

View File

@ -25,6 +25,7 @@ import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.memory.UserAttribute; import org.springframework.security.core.userdetails.memory.UserAttribute;
import org.springframework.security.core.userdetails.memory.UserAttributeEditor; import org.springframework.security.core.userdetails.memory.UserAttributeEditor;
import org.springframework.security.util.InMemoryResource;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import java.io.InputStream; import java.io.InputStream;
@ -151,4 +152,15 @@ public class UserDetailsResourceFactoryBean implements ResourceLoaderAware, Fact
result.setResource(propertiesResource); result.setResource(propertiesResource);
return result; 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);
}
} }

View File

@ -86,6 +86,13 @@ public class UserDetailsResourceFactoryBeanTest {
.hasStackTraceContaining("invalidFormatHere"); .hasStackTraceContaining("invalidFormatHere");
} }
@Test
public void getObjectWhenStringSingleUserThenGetsSingleUser() throws Exception {
this.factory = UserDetailsResourceFactoryBean.fromString("user=password,ROLE_USER");
assertLoaded();
}
private void assertLoaded() throws Exception { private void assertLoaded() throws Exception {
Collection<UserDetails> users = factory.getObject(); Collection<UserDetails> users = factory.getObject();