为了账号安全,请及时绑定邮箱和手机立即绑定

fegin 获取 client 端接口数据时不能获取HttpServletRequest,cookie等数据解决方案

标签:
Spring Cloud

问题出现场景

1.前端请求fegin服务端api接口

https://img1.sycdn.imooc.com//5e2a63d8000118bf04910098.jpg

2.fegin请求user Client端数据接口

https://img1.sycdn.imooc.com//5e2a64a2000125ae04690119.jpg

https://img1.sycdn.imooc.com//5e2a6449000124b508130194.jpg

3.!这里的Console.log("Token={}",token)输出为空

https://img1.sycdn.imooc.com//5e2a64e0000102bc11680062.jpg

https://img1.sycdn.imooc.com//5e2a64cb000132d908920197.jpg

解决方案

fegin端在config包下新建FeginInterceptor类继承RequestInterceptor拦截器

https://img1.sycdn.imooc.com//5e2a65540001991b02700070.jpg

package config;
import java.util.Enumeration;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import feign.RequestInterceptor;
import feign.RequestTemplate;
public class FeginInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
// TODO Auto-generated method stub
Map<String, String> headers = getHeaders();
for (String headerName : headers.keySet()) {
template.header(headerName, getHeaders().get(headerName));
}
}
/**
*获取所有的header数据
*/
private Map<String, String> getHeaders() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
.getRequest();
Map<String, String> map = new LinkedHashMap<>();
Enumeration<String> enumeration = request.getHeaderNames();
while (enumeration.hasMoreElements()) {
String key = enumeration.nextElement();
String value = request.getHeader(key);
map.put(key, value);
}
return map;
}
}

https://img1.sycdn.imooc.com//5e2a662a00019af509330526.jpg

https://img1.sycdn.imooc.com//5e2a663f0001712a06760460.jpg

@Bean
public RequestInterceptor getRequestInterceptor(){
    return new FeginInterceptor();
}

https://img1.sycdn.imooc.com//5e2a667700018d1304310054.jpg

成功解决

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消