第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Spring Webflux的WebClient的用戶名和密碼放在哪里?

Spring Webflux的WebClient的用戶名和密碼放在哪里?

慕村225694 2023-03-09 17:18:51
我嘗試使用路由器和處理程序類制作 Spring WebFlux 安全應(yīng)用程序。首先,下面的代碼是WebFlux安全的配置代碼。@Configuration@EnableWebFluxSecuritypublic class BlogWebFluxSecurityConfig {        @Bean    public MapReactiveUserDetailsService userDetailsService() {                UserDetails userWebFlux = User.withUsername("joseph").password("password").roles("USER").build();        return new MapReactiveUserDetailsService(userWebFlux);    }        @Bean    public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {        http        .authorizeExchange()        .pathMatchers("/route/user/all", "/route/post/all").permitAll()        .pathMatchers(HttpMethod.GET, "/route/user/**", "/route/post/**").hasRole("USER")        .anyExchange().authenticated()        .and()        .httpBasic();                return http.build();    } }接下來的代碼是關(guān)于路由器類的。@Configuration@EnableWebFluxpublic class BlogWebFluxEndpointRouter {    @Bean    public RouterFunction<ServerResponse> routesUser(UserHandler handler) {                return RouterFunctions.route(RequestPredicates.GET("/route/user/all"), handler::findAll)                    .andRoute(RequestPredicates.GET("/route/user/id/{id}"), handler::findById)                    .andRoute(RequestPredicates.GET("/route/user/username/{username}"), handler::findByUsername)                    .andRoute(RequestPredicates.GET("/route/user/email/{email}"), handler::findByEmail)                    .andRoute(RequestPredicates.POST("/route/user/create"), handler::register)                    .andRoute(RequestPredicates.GET("/route/user/login/{username}/{password}"), handler::authenticate);    }    因?yàn)槲易隽薟ebFlux安全配置,肯定有一些WebClient不能執(zhí)行和禁止的,如下圖,Login : UnauthorizedUser Creation: Forbidden我不使用 cURL。所以我想知道的是我的WebClient方法是什么,必須在其中找到用戶名和密碼并將其轉(zhuǎn)移到WebClient課堂上。任何答復(fù)將不勝感激。
查看完整描述

3 回答

?
MMTTMM

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)在已棄用。


查看完整回答
反對 回復(fù) 2023-03-09
?
侃侃爾雅

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()));



查看完整回答
反對 回復(fù) 2023-03-09
?
GCT1015

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();


查看完整回答
反對 回復(fù) 2023-03-09
  • 3 回答
  • 0 關(guān)注
  • 176 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號