Java动态修改用户Session实战-动态修改Session原理介绍

锋哥原创的Java动态修改用户Session实战:

Java动态修改用户Session实战课程_哔哩哔哩_bilibiliJava动态修改用户Session实战课程,管理员可以修改任意一个用户的session信息作者:java1234_小锋站点:www.java1234.vip喜欢的朋友点赞+关注B站支持下哈!, 视频播放量 839、弹幕量 1、点赞数 17、投硬币枚数 6、收藏人数 16、转发人数 1, 视频作者 java1234官方, 作者简介 公众号:java1234 微信:java9266,相关视频:2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~,PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~,实战springboot+CAS单点登录系统,打造前后端分离 权限系统 基于SpringBoot2+SpringSecurity+Vue3.2+Element Plus 视频教程 (火爆连载更新中..),SpringBoot微信小程序电商实战项目课程 Vue3.2 Element Plus后台管理 ( 火爆连载更新中... ),Java报表之JFreeChart视频教程,【免费】springboot+vue在线考试系统 Java毕业设计,【免费】微信小程序扫码点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端技术实现) Java毕业设计,非常好的源码,微信支付视频教程(Java版),【免费】微信小程序外卖跑腿点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端技术实现) Java毕业设计,非常好的源码icon-default.png?t=N7T8https://www.bilibili.com/video/BV1jh411B7Lp/当前用户自身是可以通过sesssion.setAttribute方法修改session信息的。

Java动态修改用户Session实战-动态修改Session原理介绍_第1张图片

但是我们在某些情况,业务上要求非自身用户修改Session;

比如管理员后台充值好vip后,数据是修改了,但是登录用户的Session没变化,用户看到的依然是非Vip,需要重新登录后,才能看到vip信息,用户体验就差劲了;如果我们可以动态的去修改任意一个用户的Session信息,那用户无需登录,刷新网页就立即能看到vip信息,那用户体验就上来了。

我们终极解决方案如下图:

Java动态修改用户Session实战-动态修改Session原理介绍_第2张图片

我们可以创建一个Session监听器,来监听用户Session的创建和销毁事件,所以这里,我们可以去维护一个sessionId和Session对象关系的存储介质,一般情况下可以用HashMap,正好是key-value键值对,假如高并发情况,也可以存储到告诉缓存Redis,当然对象的话,注意要序列化;

同时每次用户登录后,我们可以得到userIdsessionId,我们也用一个存储介质维护起来,我们这里为了测试方便,用servletContext全局上下文存储,高并发下,依然要选用Redis存储;

有了以上两个核心的存储介质加上session监听器,我们就可以实现动态修改Session了;

具体步骤如下:

第一步:用户登录,得到sessionId和userId;

第二步:把sessionId和userId存储到servletContext全局上下文,格式 { userId : sessionId } ;

第三步:登录请求触发session监听器的sessonCreated方法;

第四步:sessionCreated方法添加session信息到HashMap,格式 { sessionId : session对象 } ;

第五步:管理员登录,根据userId去servletContext查询sessionId;

第六步:得到sessionId后去hashMap里去查询session对象;

通过以上步骤,得到指定用户的Session对象后,就可以任意操作了;

你可能感兴趣的:(java,java,开发语言,修改Session,session)