0
我如何摆脱WebFilter与SecurityContextHolder中的块。我尝试在Mono的doOnSuccess(...)和ThenEmpty(...)中进行auth设置,但它从未被调用过。异步弹簧安全WebFilter
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
HttpHeaders headers = exchange.getRequest().getHeaders();
long internalId = Long.parseLong(headers.get(INTERNAL_ID_HEADER).get(0));
String email = headers.get(EMAIL_HEADER).get(0);
Mono<User> userMono = Mono.just(internalId)
.flatMap(userRepository::findById)
.switchIfEmpty(userRepository.save(new User().setId(internalId)
.setFirstName(getFirstName(email))
.setLastName(getLastName(email))
.setEmail(email)
)
);
SecurityContextHolder.getContext().setAuthentication(userMono.block());
return chain.filter(exchange);
}
所以,你可以,请给我一个方法,我如何使用UserDetailsRepository的用户没有密码? (应用程序放置在Web服务器后面,该服务器使用SSO并设置所需的标题) –
您是否试过我列出的博客文章中解释的方法? (使用EnableWebFluxSecurity并提供你的'UserDetailsRepository''完成后,请打开一个新的SO问题并显示你已经尝试了什么 –
如何使用'UserDetailsRepository'给没有密码的用户授权使用标题值? –