微服务多模块下解决session共享问题

在微服务中拆分模块中,往往需要用到session,但是网关会把session过滤掉,此时我们就需要用到session共享机制了。

服务提供者中做以下配置

1、导入依赖

<dependency>
	<groupId>org.springframework.session</groupId>
	<artifactId>spring-session-data-redis</artifactId>
</dependency>

2、开启session共享(是通过redis来解决的)

spring:
  session:
    store-type: redis #开启session共享

3、配置redis

redis:
    host: localhost
    port: 6379
    password: 123456

4、在启动类中开启session共享

@SpringBootApplication
@EnableRedisHttpSession //开启session共享

网关中需要做同样的配置

1、导入依赖

<dependency>
	<groupId>org.springframework.session</groupId>
	<artifactId>spring-session-data-redis</artifactId>
</dependency>

2、开启session共享(是通过redis来解决的)

spring:
  session:
    store-type: redis #开启session共享

3、配置redis

redis:
    host: localhost
    port: 6379
    password: 123456

4、配置网关

需要在网关中配置不过滤session

zuul:
  routes:
    user:
      path: /user/**
      serviceId: CLOUD-MALL-USER
  sensitive-headers:  #把sensitive-headers设置为空,session不过滤

5、在启动类中开启session共享

@SpringBootApplication
@EnableFeignClients
@EnableZuulProxy
@EnableRedisHttpSession //开启session共享
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐