【发布时间】:2018-04-18 22:45:37
【问题描述】:
我有以下 Spring 5 安全配置:
@Configuration
@EnableWebFluxSecurity
class SecurityConfiguration(private val us: UserService) : UserDetailsRepository {
override fun findByUsername(username: String?): Mono<UserDetails> {
if (username != null) {
val user = us.byUsername(username).block()
val grantedAuthorities = user.roles!!
.map{SimpleGrantedAuthority(it)}
var userDetails: UserDetails = org.springframework.security.core.userdetails.User(user.username,
user.password, user.enabled, user.accountNonExpired, user.credentialsNonExpired,user.accountNonLocked,
grantedAuthorities)
return userDetails.toMono()
}
throw UsernameNotFoundException("Username is null")
}
}
我正在使用自定义用户服务,并将此 User 映射到 Spring Security UserDetails 对象。要获取User 对象,我需要使用block() 语句。有没有办法让这段代码不阻塞?
【问题讨论】: