SpringCloud Webflux過(guò)濾器增加header傳遞方式
Webflux過(guò)濾器增加header傳遞
webflux 使用異步非阻塞的方式,傳遞Header還需要我們自己增加代碼傳遞:
定義過(guò)濾器,便攜下面的配置可以嘗試一下header的傳遞到后面的服務(wù)中。
@Component public class AuthorizationFilter implements WebFilter { @Override public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) { ServerHttpRequest mutatedRequest = exchange.getRequest().mutate().header(HttpHeaders.AUTHORIZATION, "Bearer " + authHeader).build(); ServerWebExchange mutatedExchange = exchange.mutate().request(mutatedRequest).build(); return chain.filter(mutatedExchange); } } ## Kotlin 的方式 @Component class AuthorizationFilter : WebFilter { override fun filter(exchange: ServerWebExchange, chain: WebFilterChain): Mono<Void> { val mutatedRequest = exchange.request.mutate().header(HttpHeaders.AUTHORIZATION, "Bearer $authHeader").build() val mutatedExchange = exchange.mutate().request(mutatedRequest).build() return chain.filter(mutatedExchange) } }
Webflux過(guò)濾器使用
下面是簡(jiǎn)單處理token的例子
@Component @Order(value = 2) public class AuthFilter implements WebFilter { @Override public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) { ServerHttpRequest request = exchange.getRequest(); //ServerHttpResponse response = exchange.getResponse(); String token = request.getHeaders().getFirst("token"); if(null == token){ /*http頭中沒(méi)有appKey,修改請(qǐng)求的目標(biāo)url為/auth/error request.mutate返回一個(gè)請(qǐng)求構(gòu)建器(builder design pattern),path方法修改請(qǐng)求的url,build方法返回新的request */ ServerHttpRequest authErrorReq = request.mutate().path("/auth/error").build(); //erverWebExchange.mutate類似,構(gòu)建一個(gè)新的ServerWebExchange ServerWebExchange authErrorExchange = exchange.mutate().request(authErrorReq).build(); return chain.filter(authErrorExchange); } else{ return chain.filter(exchange); } } }
webFlux將指定的錯(cuò)誤信息通過(guò)json格式返回給前端
exchange.getResponse().writeWith(Flux.just(exchange.getResponse().bufferFactory().wrap(JsonUtil.toJson(new BaseErrorVO().fail(e.getMessageCode(),e.getSystemMessage())).getBytes())));
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于Linux服務(wù)器配置java環(huán)境遇到的問(wèn)題小結(jié)
這篇文章主要介紹了關(guān)于Linux服務(wù)器配置java環(huán)境遇到的問(wèn)題小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12JavaWeb文件上傳下載實(shí)例講解(酷炫的文件上傳技術(shù))
在Web應(yīng)用系統(tǒng)開發(fā)中,文件上傳功能是非常常用的功能,今天來(lái)主要講講JavaWeb中的文件上傳功能的相關(guān)技術(shù)實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-11-11注冊(cè)中心配置了spring?security后客戶端啟動(dòng)報(bào)錯(cuò)
這篇文章主要為大家介紹了注冊(cè)中心配置了spring?security后客戶端啟動(dòng)報(bào)錯(cuò)問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07Spring Boot2深入分析解決java.lang.ArrayStoreException異常
這篇文章介紹了Spring Boot2深入分析解決java.lang.ArrayStoreException異常的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12java 異常被catch后 將會(huì)繼續(xù)執(zhí)行的操作
這篇文章主要介紹了java 異常被catch后 將會(huì)繼續(xù)執(zhí)行的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02Spring Cloud升級(jí)最新Finchley版本的所有坑
這篇文章主要介紹了Spring Cloud升級(jí)最新Finchley版本的所有坑,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08