mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-06-28 23:02:15 +00:00
Run PasswordEncoder on Schedulers.parallel()
This commit is contained in:
parent
a563689e6c
commit
895f0d108c
@ -21,11 +21,13 @@ package org.springframework.security.authentication;
|
|||||||
import org.springframework.security.authentication.encoding.PlaintextPasswordEncoder;
|
import org.springframework.security.authentication.encoding.PlaintextPasswordEncoder;
|
||||||
import org.springframework.security.core.Authentication;
|
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.UserDetailsRepository;
|
||||||
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
|
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
import reactor.core.scheduler.Schedulers;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Rob Winch
|
* @author Rob Winch
|
||||||
@ -44,8 +46,8 @@ public class UserDetailsRepositoryAuthenticationManager implements ReactiveAuthe
|
|||||||
@Override
|
@Override
|
||||||
public Mono<Authentication> authenticate(Authentication authentication) {
|
public Mono<Authentication> authenticate(Authentication authentication) {
|
||||||
final String username = authentication.getName();
|
final String username = authentication.getName();
|
||||||
return repository
|
return this.repository.findByUsername(username)
|
||||||
.findByUsername(username)
|
.publishOn(Schedulers.parallel())
|
||||||
.filter( u -> this.passwordEncoder.matches((String) authentication.getCredentials(), u.getPassword()))
|
.filter( u -> this.passwordEncoder.matches((String) authentication.getCredentials(), u.getPassword()))
|
||||||
.switchIfEmpty( Mono.error(new BadCredentialsException("Invalid Credentials")) )
|
.switchIfEmpty( Mono.error(new BadCredentialsException("Invalid Credentials")) )
|
||||||
.map( u -> new UsernamePasswordAuthenticationToken(u, u.getPassword(), u.getAuthorities()) );
|
.map( u -> new UsernamePasswordAuthenticationToken(u, u.getPassword(), u.getAuthorities()) );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user