UserDetailsRepository->ReactiveUserDetailsService
Issue gh-4615
This commit is contained in:
+5
-7
@@ -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
|
||||
|
||||
+5
-5
@@ -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
|
||||
+1
-1
@@ -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);
|
||||
}
|
||||
+4
-5
@@ -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);
|
||||
}
|
||||
|
||||
+4
-7
@@ -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
|
||||
Reference in New Issue
Block a user