3 回答

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
從 spring 5.1 開始,您應(yīng)該使用 設(shè)置基本身份驗(yàn)證HttpHeaders#setBasicAuth
,如下所示:
webClient .get() .uri("https://example.com") .headers(headers -> headers.setBasicAuth("username", "password")) .exchange() ....
以前使用 的方法.filter(basicAuthentication("user", "password")
現(xiàn)在已棄用。

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
HTTP 基本身份驗(yàn)證需要在Authorization
標(biāo)頭中以 Base64 格式編碼的用戶名和密碼。此外,您不需要登錄端點(diǎn),因?yàn)榇诵畔?yīng)隨每個(gè)請求一起發(fā)送。
將 Basic Auth 標(biāo)頭添加到客戶端中的每個(gè)調(diào)用,如下所示:
String basicAuthHeader = "basic " + Base64Utils.encodeToString((username + ":" + password).getBytes()) client.get().uri("/route/user/all") .accept(MediaType.APPLICATION_JSON) .header(HttpHeaders.AUTHORIZATION, basicAuthHeader) .exchange() .flatMapMany(response -> response.bodyToFlux(User.class)) .subscribe(u -> System.out.println("All Users : " + u.getUsername() + ":" + u.getEmail() + ":" + u.getFullname()));

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
Spring 提供了 API,用于通過ClientFilters向 WebClient 提供基本的身份驗(yàn)證參數(shù)。
Authorization您可以使用較少的自定義編碼設(shè)置標(biāo)頭來獲得相同的結(jié)果。
請從 spring 文檔中查看下面的代碼片段:
import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.basicAuthentication;
WebClient client = WebClient.builder()
.filter(basicAuthentication("user", "password"))
.build();
添加回答
舉報(bào)