SpringCloud Gateway里怎么给请求添加header信息
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,这篇文章主要讲解了"SpringCloud Gateway里怎么给请求添加header信息",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringC
千家信息网最后更新 2025年02月06日SpringCloud Gateway里怎么给请求添加header信息
这篇文章主要讲解了"SpringCloud Gateway里怎么给请求添加header信息",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringCloud Gateway里怎么给请求添加header信息"吧!
import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import org.springframework.cloud.gateway.filter.GatewayFilterChain;import org.springframework.cloud.gateway.filter.GlobalFilter;import org.springframework.http.server.reactive.ServerHttpRequest;import org.springframework.security.core.context.ReactiveSecurityContextHolder;import org.springframework.security.core.context.SecurityContext;import org.springframework.stereotype.Component;import org.springframework.util.StringUtils;import org.springframework.web.server.ServerWebExchange;import reactor.core.publisher.Mono;@Componentpublic class WebFluxUserRequestInfoFilter implements GlobalFilter { private static final String ORG_CODE = "11000001"; private static final String CHANNEL_CODE = "WEBQHZX001"; private static final String HEADER_USER_INFO_ENCODE = "X-User-Info-Encode"; @Override public Monofilter(ServerWebExchange exchange, GatewayFilterChain chain) { return ReactiveSecurityContextHolder.getContext().map(SecurityContext::getAuthentication).map(authentication -> { UserRequestInfo userInfo = new UserRequestInfo(); Object details = authentication.getDetails(); if(details instanceof JWTPlayload){ JWTPlayload jwtPlayload = (JWTPlayload) details; String userId = jwtPlayload.getSub(); userInfo.setUserId(userId); userInfo.setUserName(jwtPlayload.getCname()); } return userInfo; }).defaultIfEmpty(new UserRequestInfo()).flatMap(userInfo -> { UserRequestInfoHolder.setInstance(userInfo); String userInfoJson; try { String userInfoEncode = exchange.getRequest().getHeaders().getFirst(HEADER_USER_INFO_ENCODE); if(!StringUtils.isEmpty(userInfoEncode) && "false".equalsIgnoreCase(userInfoEncode)){ userInfoJson = JsonUtils.object2Json(userInfo); }else{ userInfoJson = URLEncoder.encode(JsonUtils.object2Json(userInfo), GlobalConstant.CHARSET); } } catch (UnsupportedEncodingException e) { throw new RuntimeException("URLEncoder.encode UserRequestInfo 失败"); } ServerHttpRequest newRequest = exchange.getRequest().mutate() .header(HeaderDefinition.USER_INFO, userInfoJson) .build(); return chain.filter(exchange.mutate().request(newRequest).build()); }); }}
感谢各位的阅读,以上就是"SpringCloud Gateway里怎么给请求添加header信息"的内容了,经过本文的学习后,相信大家对SpringCloud Gateway里怎么给请求添加header信息这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
信息
学习
内容
就是
思路
情况
文章
更多
知识
知识点
篇文章
跟着
问题
实践
推送
研究
验证
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
迷雾世界新服务器
河南通信软件开发服务五星服务
服务器开发算软件开发吗
香港服务器的优势
软件开发项目预算情况
是采用综合的网络技术设置在
笑傲江湖ol数据库详解
软件开发管理制度汇编免费
新乡磐石网络技术有限公司
投注app软件开发
宜兴方便软件开发诚信合作
湖北邮箱外贸软件开发
虎符网络安全黑马
google云服务器申请
嵌入式数据库消除了与客户
乾安软件开发商
淮安景德镇网络技术优化方案
信息网络安全教育证书
济南央企软件开发
数知科技互联网并购基金
供电公司开播助力网络安全
多个数据库文件如何导单表
安全通告网络安全世界
netstat查看数据库连接数
二道区网络技术售后服务
刑侦指纹数据库
贵州pdu服务器专用电源订购
成电网络安全学院
ftp服务器数据库用哪个
第一届国家网络安全宣传周日期