feign服务间调用保留session


前言

分布式有时会使用
feign进行服务间调用 传递的session如果不进行配置会丢失
进行拦截器编写保留传递的session数据


一、拦截器编写


import feign.RequestInterceptor;
import feign.RequestTemplate;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

/**
 * 描述:     Feign请求拦截器
 */
@EnableFeignClients
@Configuration
public class FeignRequestInterceptor implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate requestTemplate) {
        //通过RequestContextHolder获取到请求
        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
        if (requestAttributes == null) {
            return;
        }
        HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
        //拿到所有头名 并封为一个集合
        Enumeration<String> headerNames = request.getHeaderNames();
        if (headerNames != null) {
            while (headerNames.hasMoreElements()) {
                String name = headerNames.nextElement();
                Enumeration<String> values = request.getHeaders(name);

                while (values.hasMoreElements()) {
                    String value = values.nextElement();
                    requestTemplate.header(name, value);
                }
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
循序渐进,学习Spring Boot、Spring Boot & Shiro、Spring CloudSpring Security & Spring Security OAuth2,博客Spring系列源码 一、Spring Boot教程 开启Spring Boot Spring Boot基础配置 Spring Boot中使用MyBatis Spring Boot中使用JdbcTemplate Spring Boot MyBatis配置Druid多数据源 Spring Boot JdbcTemplate配置Druid多数据源 Spring Boot AOP记录用户操作日志 Spring Boot中使用thymeleaf Spring Boot中使用Redis缓存数据 Spring Boot中使用Ehcache缓存数据 Spring Boot中的JSON技术 Spring Boot中编写单元测试 Spring Boot整合Swagger2构建RESTful API 使用Actuator监控Spring Boot应用 使用Spring Boot发送邮件 使用Spring Boot Admin监控服务 Spring Boot Devtools热部署 Spring Boot logback日志配置 Spring Boot项目打包成war包 Linux下部署Spring Boot jar Spring Boot中使用Jsoup防御XSS攻击 Spring Boot异常处理 Spring Boot中使用过滤器和拦截器 Spring Boot整合MyBatis通用Mapper和PageHelper 深入学习Spring Boot自动装配 深入学习Spring Boot中的SpringApplication Spring Boot配合Hibernate Validator参数校验 自定义Spring Boot 内容协商 Spring Boot 中处理跨域 Spring Boot 中的异步调用 Spring Boot 整合Kafka Spring Boot整合Mongo DB Spring Boot 2.0 WebFlux编程 Spring Boot WebFlux增删改查样例 二、Spring Boot & Shiro教程 Spring Boot Shiro用户认证 Spring Boot Shiro Remember Me Spring Boot Shiro权限控制 Spring Boot Shiro Redis Spring Boot Shiro Ehcache Spring Boot Thymeleaf中使用Shiro标签 Spring Boot Shiro在线会话管理 Spring Boot Shiro整合JWT 三、Spring Boot & Security教程 Spring Boot中开启Spring Security Spring Security自定义用户认证 Spring Security添加图形验证码 Spring Security添加记住我功能 Spring Security短信验证码登录 Spring Security Session管理 Spring Security退出登录 Spring Security权限控制 Spring Security OAuth2入门 Spring Security OAuth2自定义Token获取方式 Spring Security OAuth2自定义令牌配置 Spring Security OAuth2单点登录 四、Spring Cloud教程 初识Spring Cloud与微服务 Spring Cloud Eureka服务治理 Spring Cloud Ribbon客户端负载均衡 Spring Cloud Hystrix服务容错 Spring Cloud Hystrix Dashboard仪表盘 Spring Cloud Hystrix Dashboard仪表盘 & RabbitMQ Spring Cloud Feign 声明式服务调用 Spring Cloud Zuul服务网关 Spring Cloud Config统一配置管理 使用Spring Cloud Bus刷新配置 使用Spring Cloud Sleuth跟踪微服务 Spring Cloud Consul服务治理 五、Spring Boot && Dubbo教程 Spring Boot整合Dubbo&Zookeeper; 监控Dubbo服务 Dubbo的高可用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qwecxzz

鸡腿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值