目录
三、session问题的解决方式----不同服务器不共享问题
2、自定义CookieSerializer,解决子域session共享问题
一、session的原理
二、session的问题
①不同域名不能共享
②分布式同一个域名下,不同的服务器session不共享问题
三、session问题的解决方式----不同服务器不共享问题
1、session复制
2、客户端cookie的存储
3、hash一致性
根据用户,到指定的机器上登录。但是远程调用还是不好解决
4、redis统一存储
5、不同域名之间问题通过设置父域名来进行解决
通过原生API的httpservletResponse这个类来设置
Cookie cookie=new Cookie("key","value");
cookie.setDomain("父域名");
httpServletResponse.addCookie(cookie);
四、springsession-----解决子父域名不共享
1、导入依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
2、自定义CookieSerializer,解决子域session共享问题
@Configuration
@EnableRedisHttpSession
public class GulimallSession {
@Bean
public CookieSerializer cookieSerializer(){
DefaultCookieSerializer defaultCookieSerializer=new DefaultCookieSerializer();
defaultCookieSerializer.setDomainName("gulimall.com");
defaultCookieSerializer.setCookieName("XJHSESSION");
return defaultCookieSerializer;
}
}
3、序列化问题----防止存到redis的数据是二进制流
@Bean
public RedisSerializer<Object> springSessionDefaultRedisSerializer(){
return new GenericFastJsonRedisSerializer();
}
4、开启@EnableRedisHttpSession
5、配置属性
spring:
redis:
host: 192.168.80.128
port: 6379
session:
store-type: redis