springBoot+redis 实现session共享理解,应用场景单点登录,分布式应用。

Springboot+redis 实现session共享也是利用了cookie在域名,路径相同的情况下可以共享内容。第一次请求会将SESSION保存在redis中,并将SESSIONID返回到浏览器的cookie中,第二次请求会携带上第一次请求的JSESSIONID。服务端拿到ID先到redis中查找是否存在此SSSSION,存在则拿出来用,不会再创建新的会话。

单点登录可以用cookie+redis的方式,第一次登陆生成token,将token和用户以键值对的方式存入redis。并将token写入cookie返回到浏览器。以后每次请求cookie都会携带上token。服务端获取token然后去redis中查找是否存在此用户从而实现单点登录。

也可以用session共享的方式,将token放入session中。其余步骤和上面一样。

两者的前提都是设置cookie的domian相同,路径为“/”,区别是一个将token放在cookie中,放在cookie中服务端不用实现session共享。一个将token放在session中,服务端需要实现session共享,springboot实现session共享的方式很简单,只需要引入spring-session-data-redis,spring-boot-starter-data-redis依赖,并在启动类上加上@EnableRedisHttpSession注解即可。

通过Nginx配置的集群或分布式应用可以使用session共享来实现会话的统一管理。


你可能感兴趣的:(http,session,spring)