场景
当后台项目由部署在一台改为部署在多台以后,解决 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