spring session、spring security和redis整合的简单使用
在上一篇**spring session搭配redis的简单使用**文章中,我们简单的使用了spring session和redis,实现了session的外部化存储,下面我们结合spring security进一步体验这三者的搭配。
首先新增spring-boot-starter-security依赖
<!--实现spring boot对security的自动化配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
然后我们简单通过配置文件的方式在内存中创建一个用户
# 应用名称
spring:
application:
name: spring-session-redis-security
# 对应 RedisProperties 类
redis:
host: localhost
port: 6379
password: 479368 # Redis 服务器密码,默认为空。生产中,一定要设置 Redis 密码!
database: 0 # Redis 数据库号,默认为 0
timeout: 15000 # Redis 连接超时时间,单位:毫秒。
# 对应 RedisProperties.Jedis 内部类
jedis:
pool:
max-active: 8 # 连接池最大连接数,默认为 8 。使用负数表示没有限制 同一时间最大只能执行8条sql语句,每执行一条语句就会建立一个连接
max-idle: 8 # 默认连接数最大空闲的连接数,默认为 8 。使用负数表示没有限制。
min-idle: 0 # 默认连接池最小空闲的连接数,默认为 0 。允许设置 0 和 正数。
max-wait: -1 # 连接池最大阻塞等待时间,单位:毫秒。默认为 -1 ,表示不限制。 执行语句到数据库响应数据的时间
security:
user:
name: user
password: user
server:
port: 8858
启动应用,查看redis访问前数据,什么数据都没有
访问SessionController中的http://localhost:8858/session/getAll接口,先不登陆,查看redis,可以看到redis多出了一条session数据
通过user进行登录,再次查看redis,我们可以发现先前的sessionId改变了,同时还多出了一条数据"spring:session:index:org.springframework.session.FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME:user",这条数据就是我们刚登陆的user
为了了解更多seesion的详细信息,我们可以通过hgetall session语句查询
hgetall spring:session:sessions:9fea3331-9b01-48ff-b469-1fffcbb0b654
最后我们通过访问http://localhost:8858/logout这个接口可以访问到spring security自带的退出登录的页面
点击Log Out退出登录,然后再出查看redis,我们会发现之间的增加的那条用户数据不见了