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