SpringSecurity提供了默认了登陆窗口
SpringSession - redis 提供了session情报的redis连携机能,
Session
问题
指APserver内信息的保存区域,使用多台AP构成的结构中,每台只保存自己的session情报的话,多台之间不能实现共享,用户的信息没法实现共享
解决方式
- StickSession 使AP和Client之间实现1;1的构成,用户每次的访问路由到同一台server,失去了Loadbalance的意义
- Session复制 需要额外成本
- 外部存储
- RDBMS 或者 KVS 的方法保存到外部存储机制中
- HttpSession 的 API 提供了KVS的保存机制API,适合与KVS方式的保存
- APServer和KVS的分离,容易实现扩展(AWS EC2 + ElastiCache Redis)
Redis安装以及设定
参照: Redis.
依赖注入
依赖文件;build.gradle
// Redis
compile("org.springframework.boot:spring-boot-starter-data-redis:$springBootVersion")
compile("org.springframework.session:spring-session-data-redis:$springBootVersion")
属性设置
配置追加;application.yml
Spring
redis:
host: 192.168.44.10
port: 6379
database: 0
启动测试
通过Security提供的默认登陆窗口,
输入用户名,密码,登陆成功后可以看到
信息保存在了Redis
127.0.0.1:6379> keys *
1) "spring:session:sessions:12345678-12345-45cc-9128-7bc1acaa061c2e"
2) "spring:session:sessions:expires:12345678-d011-45cc-9128-7bc1ac061c2e"
3) "spring:session:index:org.springframework.session.FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME:admin"
4) "spring:session:expirations:1551083520000"
继续,使用SpringSession 扩展 HttpSession实现,以后追加。
//TODO
待续。。。。。。