架构如果设计为分布式的时候,那么如何保证会话的统计呢,多台tomcat,每个请求都不是到同一个tomcat,这样就创建了很多会话,会话无法统一,也就无法保证用户的信息统一了。
一、使用redis做分布式会话
redis是分布式的,我们就可以生成token并携带用户id存储到redis中,同时保存cookie中的token信息,这样用户浏览器的cookie和分布式的redis中的token就保持了一致。
image.png
image.png
二、使用springSession做分布式会话
首先需要引入spring-session依赖,如果有报错缺少security依赖,就把下面的依赖一并加上。
image.png
配置:
store-type : 会话信息保存的介质
image.png
在启动类里面也需要加上注解,打开使用redis作为spring session
image.png
然后启动之后,我们会发现redis中已经有了一些spring-session的东西,这些都是spring-session初始化的数据。
image.png
spring-session是需要我们登陆一下的,默认的用户名是user,密码可以在控制台看到
image.png image.png
使用了springSecurity框架,有一点就是总是需要登陆,那么怎么去掉登陆呢?可以在启动类里面,把这个安全依赖给去除掉即可。
image.png
上面我们讲了两种使用分布式会话的方式,其实最推荐的还是使用redis,因为使用spring-session会与java和spring的耦合度比较高,因为如果团队中有其他同事使用其他的编程语言,那么他去取spring-session存储的redis数据会比较难受,因为spring-session存储的数据较为复杂:
image.png
网友评论