public class JWTAuthConverter implements Function<ServerWebExchange, Mono<Authentication>> {
@Override
public Mono<Authentication> apply(ServerWebExchange serverWebExchange) {
return Mono.justOrEmpty(serverWebExchange)
.map(JWTUtil::getAuthorizationPayload)
.filter(Objects::nonNull)
.filter(JWTUtil.matchBearerLength())
.map(JWTUtil.getBearerValue())
.filter(token -> !token.isEmpty())
.map(JWTUtil::verifySignedJWT)
.map(JWTUtil::getUsernamePasswordAuthenticationToken)
.filter(Objects::nonNull);
}
}