Spring Boot + Shiro 实现 Session 持久化实现思路及遗留问题
发布网友
发布时间:2天前
我来回答
共1个回答
热心网友
时间:2024-10-22 19:27
作者观点:个人理解,欢迎指正
Session持久化的必要性在于处理特定场景,如Servlet*获取用户会话信息和防止误操作。为实现实时踢出功能,可以通过监听Session创建、销毁和属性变更,记录SessionId,但这种方式依赖于用户的被动操作,存在局限性。
Shiro的自定义会话机制提供了更完善的解决方案,其内置的MemorySessionDao存储用户会话,简化了处理。例如,在用户服务中,删除用户时需要注销所有在线会话,确保用户下次请求为未认证状态。在实践中,添加Shiro和Ehcache依赖,配置Shiro并开启缓存,但在尝试删除用户会话时出现了两个问题。
第一个问题是,使用SecurityUtils.getSubject()跨线程共享时,session删除可能导致其他线程找不到session,出现StoppedSessionException。尽管尝试了推荐的解决方案,但问题依然存在。第二个问题是,Session ID冲突导致登录会话丢失,尽管已重置Cookie名称,但问题未解决。
作者最终发现,问题出在Shiro版本的跨线程共享处理上,升级至1.10.0版本解决了问题。现在,通过正确的代码,可以正常删除Session并继续流程。但作者仍在研究SecurityUtils.getSubject().logout()的正常退出机制,欢迎读者提供对1.9.0版本问题的见解。
Spring Boot + Shiro 实现 Session 持久化实现思路及遗留问题
Session持久化的必要性在于处理特定场景,如Servlet限制获取用户会话信息和防止误操作。为实现实时踢出功能,可以通过监听Session创建、销毁和属性变更,记录SessionId,但这种方式依赖于用户的被动操作,存在局限性。Shiro的自定义会话机制提供了更完善的解决方案,其内置的MemorySessionDao存储用户会话,简化了处理...
SpringBoot进阶之整合Shiro实现缓存和会话管理
这样就可以了,大家可以把测试获取用户的地方改成数据库获取,看下 控制台 sql日志会明显减少,因为有一部分是从缓存拿的 这部分功能还是比较好玩的,学完可以自由发挥做一个房间功能,可以加入可以踢人,下面我们就开整 修改 ShiroConfig ,添加方法,因为我们使用的是 Redis 缓存 实现 Sess...
【SpringBoot】Shiro实现无状态登录
使用Shiro实现无状态登录的主要步骤有,禁用缓存、设置不创建session、关闭Session验证、关闭Session存储、注入自定义拦截器、开启Shiro的注解(如@RequiresRoles,@RequiresPermissions)等。获取token,这里token写死为admin 添加增删改查接口,并设置需要的访问权限 关键是设置不创建Session 主要功能就是拦截http请求...
Spring Boot 搭建的一个企业级快速开发脚手架
复用,组装性强主要应用技术: 项目地址: https://gitee.com/YYDeament/88ybg 3、项目名称: JAVA 分布式快速开发平台 项目简介: JAVA 分布式快速开发平台:SpringBoot,SpringMVC,Mybatis,mybatis-plus,motan/dubbo分布式,Redis 缓存,Shiro 权限管理,Spring-Session 单点登录,Quartz 分布式集群调度,Restful 服务,QQ/微信...
java权限管理框架有哪些(java权限管理框架shiro)
十、Shiro 延展阅读: 一、SpringMVC SpringWebMVC是一种基于Java的实现了WebMVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,SpringWebMVC也是要简化我们日常Web开发的。 模型(Model)封装了应用程序的...
springboot注解注入bean(springbootapplication注解)
然后,在Shiro的配置文件中初始化AddPrincipalToSessionFilter:最后帮朋友打个小广告 一个有趣的迷你小程序 springboot启动排除某些bean的注入问题:最近做项目的时候,需要引入其他的jar。然后还需要扫描这些jar里的某些bean。于是使用注解:@ComponentScan 这个注解直接指定包名就可以,它会去扫描这个包下所有...
现在用springboot多吗(springboot用来干什么)
SpringBoot基于Spring,简单且容易上手,很多人想当然的跳过SSM直接上SpringBoot。springcloud=N个springboot+很多分布式组件+运维。利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。难。springbootvue毕设难。springbootvue的毕设难。基于springbootvue...
快速springboot框架?
BootDo是在SpringBoot基础上搭建的一个Java基础开发平台,MyBatis为数据访问层,ApacheShiro为权限授权层,Ehcahe对常用数据进行缓存。 BootDo主要定位于后台管理系统学习交流,已内置后台管理系统的基础功能和高效的代码生成工具,包括:系统权限组件、数据权限组件、数据字典组件、核心工具组件、视图操作组件、工作流组件、代码生成...
255.Spring Boot+Spring Security:使用md5加密
253. Spring Boot+Spring Security:获取用户信息和session并发控制 254. Security注解:@PreAuthorize,@PostAuthorize, @Secured, EL实现方法安全 学院资源:悟空学院:t.cn/Rg3fKJD Spring Boot相关课程点击「阅读原文」查看!SpringBoot视频:t.cn/R3QepWG Spring Cloud视频:t.cn/R3QeRZc SpringBoot ...
软件开发都有哪些课程
第五阶段,SpringBootVUE全栈框架:SpringBoot、全局异常处理、过滤器监听器、EHCache缓存、SpringBoot Quartz定时任务、Vue、Vue.js 安装、模板语法、计算属性、事件处理器、Vue.js 自定义指令、Vue.js 路由等 第六阶段,特色课程:ActiveM环境搭建、生产者和消费者、消息持久化操作、RSA数字加密算法、Code...