乐趣区

SpringBootSecurity学习09网页版登录配置Session共享

场景

当后台项目由部署在一台改为部署在多台以后,解决 session 共享问题最常用的办法就是把 session 存储在 redis 等缓存中。关于 session 和 cookie 概念这里就不再赘述了,在 springboot-security 环境下,把 session 存储到 redis 中共享是非常非常简单的,除了多了一些配置,几乎不用改任何代码。共享 session 达到的效果就是,用户在一台服务器上面登录成功后,访问另外一台,用户也是处于登录状态。下面创建两个一样的项目,来配置 session 共享。

增加依赖

把 session 存储在 redis 中配置共享,需要添加两个依赖,一是 redis,二是 spring session:

配置文件修改

在配置文件中,需要配置 redis 的数据源和 session 的一些属性:

关于 session 的配置,可以根据 ide 的提示看一下:

可以看到 session 的存储不仅可以在 redis 中,还可以在数据库或者 MongoDB 中,不过目前 redis 是选择最多的一种方式。

添加注解

最后在启动类中添加一个注解 @EnableRedisHttpSession:

测试

先打开一个项目的登录页面,登录成功,

然后再打开一个浏览器,直接访问第二个项目的主页,此时不用登录直接可以访问:

来看一下 session 在 redis 中的存储:

这样就实现了 session 共享!此时把其中一个退出,另一个也会自动退出,redis 中的 session 数据也会自动删除。

代码地址:https://gitee.com/blueses/spr… 091 092

退出移动版