spring session、spring security和redis整合的简单使用

springSession+springSecurity结合使用实现redis管理session 目录1. pom.xml2. 进行springsession的redis配置3. session配置4. 查看redis5. 获取redis中的当前用户总结 springboot中使用security进行登录及权限控制可以查看之前的文章,springboot中使用spring-security进行登陆控制 此篇主要介绍在已经使用springsecuriy的项目中如何集成springsessi... 阅读详情

在上一篇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,我们会发现之间的增加的那条用户数据不见了

SpringSecurity中的集群会话Session存在的问题以及解决方案(保持、复制、共享) 在初步了解Session的时候,我们就知道Session通常是保存在服务器的内存当中的。每一次客户访问都会携带SessionId,然后在服务器的内存中寻找。虽然这种方式简单快捷,但是仍存在比较明显的缺点。服务器的内存是有限的,所以留给Session的空间不多,因此一旦用户的访问量比较多时内存就会捉襟见肘。而且因为session是存在内存当中,并不是持久化存储,就算服务器性能特别好,但是也不免存在服务器的异常停止和重启,这个时候就会导致会话状态的丢失。 阅读详情

相关推荐

从零开始java安全权限框架篇(七):spring security整合Redis实现session共享

目录 一:spring security整合spring session实现session共享 二:代码 1.springsecurity的配置文件 2.自定义的session管理 三:获取到当前的所有用户以及踢出一个用户 四:用户锁定 1.我们先来看看锁定的时序图 2.流程解析 3.代码 (1)登录流程验证验证 (2)登录失败加锁 五...

qq_35755863的博客 4875

SpringSecurity实战(三)-整合SpringSession-Redis

文章目录目标集群会话session 保持session 复制session 共享Session 共享实现代码实践核心依赖核心配置redisson.ymlspring session 的配置Spring Security 整合 Spring session问题解决 目标 了解与Spring session ,redis 的整合 参考:spring security 实战书籍 6.6 章节 集群会话 单机提供单服务只能存在于测试环境,正式环境部署工程,一般都是集群部署或者单机多服务部署。看下两者会话信息

qq1164014750 2207

永磁同步电机定子槽型设计实战:从梨形槽到矩形槽的NVH优化之路

本文深入探讨了永磁同步电机定子槽型设计在NVH优化中的关键作用,对比了梨形槽与矩形槽的性能差异。通过Ansys Maxwell仿真和实际案例,揭示了矩形槽在提升槽满率、降低电磁噪声方面的优势,并总结了五大设计黄金法则,为电机设计工程师提供了实用指导。

weixin_28740299的博客 493

spring-security简单使用与集成redis共享session(一)

一、搭建springboot项目 二、编写基础代码 1.Auth权限实体类 public class Auth implements Serializable { private static final long serialVersionUID = 1L; /** * 大模块code,例如咨询类功能 */ private String resourceCode; /** * 细化功能,例如查询咨询列表 */ p

王坤的博客 2131

达梦的自定义类型和存储过程支持创建同义词,不支持同义词使用?

达梦8的自定义类型和存储过程支持创建同义词,但是通过同义词调用报错,而在oracle上验证没有问题,难道是发现了达梦的bug了?非也非也,详情请见下文

wy071218的专栏 979

1.5元主控搞定高精度电流电压采集?STC8G1K08+INA180A3硬件设计全解析

本文详细解析了如何利用成本仅1.5元的STC8G1K08单片机与INA180A3电流检测放大器,构建一套高精度、低成本的电流电压采集系统。文章深入剖析了硬件设计精髓,包括利用MCU内部上拉电阻直驱数码管以节省成本、INA180A3的配置与计算,以及实现高频率采集并与上位机高速通信的软件策略,为嵌入式开发中的极致性价比设计提供了完整方案。

weixin_29166013的博客 599
上一篇: spring session搭配redis的简单使用
下一篇: spring security源码核心类分析
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值