1
0
mirror of synced 2026-08-05 09:47:05 +00:00

UserDetailsRepository->ReactiveUserDetailsService

Issue gh-4615
This commit is contained in:
Rob Winch
2017-10-10 09:46:15 -05:00
parent f1bc82dcef
commit 4681697581
16 changed files with 74 additions and 87 deletions
@@ -16,11 +16,9 @@
package org.springframework.security.authentication;
import org.springframework.security.authentication.encoding.PlaintextPasswordEncoder;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsRepository;
import org.springframework.security.core.userdetails.ReactiveUserDetailsService;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.util.Assert;
@@ -32,13 +30,13 @@ import reactor.core.scheduler.Schedulers;
* @since 5.0
*/
public class UserDetailsRepositoryAuthenticationManager implements ReactiveAuthenticationManager {
private final UserDetailsRepository repository;
private final ReactiveUserDetailsService repository;
private PasswordEncoder passwordEncoder = NoOpPasswordEncoder.getInstance();
public UserDetailsRepositoryAuthenticationManager(UserDetailsRepository userDetailsRepository) {
Assert.notNull(userDetailsRepository, "userDetailsRepository cannot be null");
this.repository = userDetailsRepository;
public UserDetailsRepositoryAuthenticationManager(ReactiveUserDetailsService reactiveUserDetailsService) {
Assert.notNull(reactiveUserDetailsService, "userDetailsRepository cannot be null");
this.repository = reactiveUserDetailsService;
}
@Override
@@ -30,20 +30,20 @@ import reactor.core.publisher.Mono;
* @author Rob Winch
* @since 5.0
*/
public class MapUserDetailsRepository implements UserDetailsRepository {
public class MapReactiveUserDetailsService implements ReactiveUserDetailsService {
private final Map<String,UserDetails> users;
public MapUserDetailsRepository(Map<String,UserDetails> users) {
public MapReactiveUserDetailsService(Map<String,UserDetails> users) {
this.users = users;
}
public MapUserDetailsRepository(UserDetails... users) {
public MapReactiveUserDetailsService(UserDetails... users) {
this(Arrays.asList(users));
}
public MapUserDetailsRepository(Collection<UserDetails> users) {
public MapReactiveUserDetailsService(Collection<UserDetails> users) {
Assert.notEmpty(users, "users cannot be null or empty");
this.users = users.stream().collect(Collectors.toMap( u -> getKey(u.getName()), Function.identity()));
this.users = users.stream().collect(Collectors.toConcurrentMap( u -> getKey(u.getName()), Function.identity()));
}
@Override
@@ -20,7 +20,7 @@ import org.springframework.security.core.userdetails.UserDetails;
import reactor.core.publisher.Mono;
public interface UserDetailsRepository {
public interface ReactiveUserDetailsService {
Mono<UserDetails> findByUsername(String username);
}
@@ -28,7 +28,7 @@ import org.springframework.security.core.Authentication;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetailsRepository;
import org.springframework.security.core.userdetails.ReactiveUserDetailsService;
import org.springframework.security.crypto.password.PasswordEncoder;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
@@ -38,9 +38,8 @@ import reactor.test.StepVerifier;
* @since 5.0
*/
@RunWith(MockitoJUnitRunner.class)
public class UserDetailsRepositoryAuthenticationManagerTests {
@Mock
UserDetailsRepository repository;
public class ReactiveUserDetailsServiceAuthenticationManagerTests {
@Mock ReactiveUserDetailsService repository;
@Mock
PasswordEncoder passwordEncoder;
UserDetailsRepositoryAuthenticationManager manager;
@@ -56,7 +55,7 @@ public class UserDetailsRepositoryAuthenticationManagerTests {
@Test(expected = IllegalArgumentException.class)
public void constructorNullUserDetailsRepository() {
UserDetailsRepository udr = null;
ReactiveUserDetailsService udr = null;
new UserDetailsRepositoryAuthenticationManager(udr);
}
@@ -23,30 +23,27 @@ import java.util.Collection;
import java.util.Collections;
import org.junit.Test;
import org.springframework.security.core.userdetails.MapUserDetailsRepository;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import reactor.core.publisher.Mono;
public class MapUserDetailsRepositoryTests {
public class MapReactiveUserDetailsServiceTests {
private static final UserDetails USER_DETAILS = User.withUsername("user")
.password("password")
.roles("USER")
.build();
private MapUserDetailsRepository users = new MapUserDetailsRepository(Arrays.asList(USER_DETAILS));
private MapReactiveUserDetailsService users = new MapReactiveUserDetailsService(Arrays.asList(USER_DETAILS));
@Test(expected = IllegalArgumentException.class)
public void constructorNullUsers() {
Collection<UserDetails> users = null;
new MapUserDetailsRepository(users);
new MapReactiveUserDetailsService(users);
}
@Test(expected = IllegalArgumentException.class)
public void constructorEmptyUsers() {
Collection<UserDetails> users = Collections.emptyList();
new MapUserDetailsRepository(users);
new MapReactiveUserDetailsService(users);
}
@Test