栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

分布式Session解决方案

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分布式Session解决方案

*★如果文章对你有帮助【关注点赞❤️收藏⭐】一起努力!★* 
六‍ 个人主页:花棉袄

 本章内容:【分布式Session解决方案】
✍ 版权: 本文由【花棉袄】原创在CSDN首发需要转载请联系博主

​

分布式session

 session 原理

  • session存储在服务端,jsessionId存在客户端,每次通过jsessionid取出保存的数据
  • 问题:但是正常情况下session不可跨域(不能跨域共享),它有自己的作用范围

​

解决方案
  • session要能在不同服务和同服务的集群的共享
1️⃣session复制
  • 用户登录后得到session后,服务把session也复制到别的机器上,显然这种处理很不好

2️⃣hash一致性
  • 根据用户,到指定的机器上登录,但是远程调用还是不好解决
3️⃣redis统一存储
  • 最终的选择方案,把session放到redis中

4️⃣SpringSession整合redis
  • 通过SpringSession修改session的作用域

 导入依赖

  
    org.springframework.session
    spring-session-data-redis
  

 配置SpringSession

spring.session.store-type=redis
server.servlet.session.timeout=30m
spring.redis.host=********

 启动类添加注解

@EnableRedisHttpSession

 配置文件:MySessionConfig

  • 自定义 SpringSession 完成 Session 子域共享
@Component
public class MySessionConfig {
    @Bean
    public CookieSerializer cookieSerializer() {
        DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
        cookieSerializer.setDomainName("session.com");// 放大作用域
        cookieSerializer.setCookieName("SESSION");
        cookieSerializer.setCookieMaxAge(60 * 60 * 24 * 7);// 指定cookie有效期7天,会话级关闭浏览器后cookie即失效
        return cookieSerializer;
    }

    @Bean
    public RedisSerializer springSessionDefaultRedisSerializer() {
        // 指定session序列化到redis的序列化器
        // return new Jackson2JsonRedisSerializer(Object.class);// 无法保存对象类型,反序列化后默认使用Map封装
        return new GenericJackson2JsonRedisSerializer();
    }
}
 

 登录接口

​

*★如果文章对你有帮助【关注点赞❤️收藏⭐】一起努力!★* 


 全栈小狐狸的逆袭之路:Java学习路线  往期文章:后端开发宝典
转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号