最新要闻
- 持球还得练练!杰伦抢七战出现8失误 NBA历史第二多 即时
- 预算不够免签来凑!米兰开启免签大法,夏窗欲网罗多名自由球员
- 史莱克七怪神装公布,小舞二次发育,宁荣荣最美,小奥烟熏妆差评-当前热门
- 环球消息!演唱会门票秒罄!黄牛党捞钱术升级
- 速看:日本专家三年研究:中学生入学得到手机脑力直接停滞在小学
- 天天消息!网友评新一代LCD神机Redmi Note 12T Pro:卢伟冰焊门很准
- 省“春蕾计划+我的书房”项目在盐城东台启动 热文
- 环球资讯:从华为离职创业的天才少年刚拿了百度投资:估值被曝已超独角兽
- 曾遭霸凌的解说YammerS离世 DOTA2官微回应:深感痛心_全球观天下
- 每日热议!兄妹四人同时查出肠道肿瘤:1/4肠癌患者受家族因素影响
- 天玑9300要绝杀:采用4+4全大核架构 性能狙击A17功耗大降
- 京西产业引导基金签约发布 规模10.1亿元|当前热门
- 注意防暑!多地高温已超40℃
- 诚意满满 微星发布7大类PC新品:美与性能兼备 世界速讯
- 续航128公里 雅迪联手保时捷推出电动摩托车:卖4.5万
- 世界动态:丰田带头抵触汽车全面电动化 多家日本公司站队支持:不环保、自欺欺人
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
一文详解 Sa-Token 中的 SaSession 对象-世界百事通
Sa-Token 是一个轻量级 java 权限认证框架,主要解决登录认证、权限认证、单点登录、OAuth2、微服务网关鉴权 等一系列权限相关问题。
(相关资料图)
Gitee 开源地址:https://gitee.com/dromara/sa-token
本文将详细介绍 Sa-Token 中的不同 SaSession 对象的区别,以及各种方便的存取值的方法。
一、Session 是什么?
Session 是会话中专业的数据缓存组件,通过 Session 我们可以很方便的缓存一些高频读写数据,提高程序性能,例如:
// 在登录时缓存user对象 StpUtil.getSession().set("user", user);// 然后我们就可以在任意处使用这个user对象SysUser user = (SysUser) StpUtil.getSession().get("user");
在 Sa-Token 中,SaSession 分为三种,分别是:
User-Session
: 指的是框架为每个 账号id 分配的 SaSession。Token-Session
: 指的是框架为每个 token 分配的 SaSession。Custom-Session
: 指的是以一个 特定的值 作为SessionId,来分配的 Session。
假设三个客户端登录同一账号,且配置了不共享token,那么此时的Session模型是:
简而言之:
User-Session
以UserId为主,只要token指向的UserId一致,那么对应的Session对象就一致。Token-Session
以token为主,只要token不同,那么对应的Session对象就不同。Custom-Session
以特定的key为主,不同key对应不同的Session对象,同样的key指向同一个Session对象。
二、获取 User-Session
有关账号Session的API如下:
// 获取当前账号id的Session (必须是登录后才能调用)StpUtil.getSession();// 获取当前账号id的Session, 并决定在Session尚未创建时,是否新建并返回StpUtil.getSession(true);// 获取账号id为10001的SessionStpUtil.getSessionByLoginId(10001);// 获取账号id为10001的Session, 并决定在Session尚未创建时,是否新建并返回StpUtil.getSessionByLoginId(10001, true);// 获取SessionId为xxxx-xxxx的Session, 在Session尚未创建时, 返回null StpUtil.getSessionBySessionId("xxxx-xxxx");
三、获取 Token-Session
有关令牌Session的API如下:
// 获取当前 Token 的 Token-Session 对象StpUtil.getTokenSession();// 获取指定 Token 的 Token-Session 对象StpUtil.getTokenSessionByToken(token);
四、获取自定义Session
自定义Session指的是以一个特定的值
作为SessionId来分配的Session
, 借助自定义Session,你可以为系统中的任意元素分配相应的session例如以商品id作为key为每个商品分配一个Session,以便于缓存和商品相关的数据,其相关API如下:
// 查询指定key的Session是否存在SaSessionCustomUtil.isExists("goods-10001");// 获取指定key的Session,如果没有,则新建并返回SaSessionCustomUtil.getSessionById("goods-10001");// 获取指定key的Session,如果没有,第二个参数决定是否新建并返回 SaSessionCustomUtil.getSessionById("goods-10001", false); // 删除指定key的SessionSaSessionCustomUtil.deleteSessionById("goods-10001");
五、在 Session 上存取值
// 写值 session.set("name", "zhang"); // 写值 (只有在此key原本无值的时候才会写入)session.setDefaultValue("name", "zhang");// 取值session.get("name");// 取值 (指定默认值)session.get("name", ""); // 取值 (若无值则执行参数方法, 之后将结果保存到此键名下,并返回此结果 若有值则直接返回, 无需执行参数方法)session.get("name", () -> { return ...; });// ---------- 数据类型转换: ----------session.getInt("age"); // 取值 (转int类型)session.getLong("age"); // 取值 (转long类型)session.getString("name"); // 取值 (转String类型)session.getDouble("result"); // 取值 (转double类型)session.getFloat("result"); // 取值 (转float类型)session.getModel("key", Student.class); // 取值 (指定转换类型)session.getModel("key", Student.class, ); // 取值 (指定转换类型, 并指定值为Null时返回的默认值)// 是否含有某个key (返回true或false)session.has("key"); // 删值 session.delete("name"); // 清空所有值 session.clear(); // 获取此 Session 的所有key (返回Set)session.keys();
六、其它操作
// 返回此 Session 的id session.getId(); // 返回此 Session 的创建时间 (时间戳) session.getCreateTime(); // 返回此 Session 会话上的底层数据对象(如果更新map里的值,请调用session.update()方法避免产生脏数据)session.getDataMap(); // 将这个 Session 从持久库更新一下session.update(); // 注销此 Session 会话 (从持久库删除此Session)session.logout();
七、SaSession 环境隔离说明
有同学经常会把 SaSession
与 HttpSession
进行混淆,例如:
@PostMapping("/resetPoints")public void reset(HttpSession session) {// 在 HttpSession 上写入一个值 session.setAttribute("name", 66);// 在 SaSession 进行取值 System.out.println(StpUtil.getSession().get("name"));// 输出null}
要点:
SaSession
与HttpSession
没有任何关系,在HttpSession
上写入的值,在SaSession
中无法取出。HttpSession
并未被框架接管,在使用Sa-Token时,请在任何情况下均使用SaSession
,不要使用HttpSession
。
八、未登录场景下获取 Token-Session
默认场景下,只有登录后才能通过 StpUtil.getTokenSession()
获取 Token-Session
。
如果想要在未登录场景下获取 Token-Session ,有两种方法:
- 方法一:将全局配置项
tokenSessionCheckLogin
改为 false。 - 方法二:使用匿名 Token-Session
// 获取当前 Token 的匿名 Token-Session (可在未登录情况下使用的 Token-Session)StpUtil.getAnonTokenSession();
注意点:如果前端没有提交 Token ,或者提交的 Token 是一个无效 Token 的话,框架将不会根据此 Token 创建 Token-Session
对象,而是随机一个新的 Token 值来创建 Token-Session
对象,此 Token 值可以通过 StpUtil.getTokenValue()
获取到。
参考资料
- Sa-Token 文档:https://sa-token.cc
- Gitee 仓库地址:https://gitee.com/dromara/sa-token
- GitHub 仓库地址:https://github.com/dromara/sa-token
关键词:
一文详解 Sa-Token 中的 SaSession 对象-世界百事通
世界观察:第十二单元 常用API
持球还得练练!杰伦抢七战出现8失误 NBA历史第二多 即时
预算不够免签来凑!米兰开启免签大法,夏窗欲网罗多名自由球员
史莱克七怪神装公布,小舞二次发育,宁荣荣最美,小奥烟熏妆差评-当前热门
环球消息!演唱会门票秒罄!黄牛党捞钱术升级
速看:日本专家三年研究:中学生入学得到手机脑力直接停滞在小学
天天消息!网友评新一代LCD神机Redmi Note 12T Pro:卢伟冰焊门很准
第十一单元 面向对象三:继承与多态_世界热资讯
NTP网络校时服务器 (GPS+北斗+恒温晶振)双系统设计与研究|看点
焦点简讯:[javascript/html] HTML中Location对象详解
省“春蕾计划+我的书房”项目在盐城东台启动 热文
环球资讯:从华为离职创业的天才少年刚拿了百度投资:估值被曝已超独角兽
曾遭霸凌的解说YammerS离世 DOTA2官微回应:深感痛心_全球观天下
每日热议!兄妹四人同时查出肠道肿瘤:1/4肠癌患者受家族因素影响
天玑9300要绝杀:采用4+4全大核架构 性能狙击A17功耗大降
京西产业引导基金签约发布 规模10.1亿元|当前热门
注意防暑!多地高温已超40℃
诚意满满 微星发布7大类PC新品:美与性能兼备 世界速讯
续航128公里 雅迪联手保时捷推出电动摩托车:卖4.5万
世界动态:丰田带头抵触汽车全面电动化 多家日本公司站队支持:不环保、自欺欺人
一脚踏入软绵云朵:361° 游鲸飞标洞洞鞋103元3.69折抄底
热门:易基因:全基因组ChIP-seq分析揭示细菌转录因子PhoB的基因内结合位点|mBio
直播源码平台搭建技术分享之直播短信功能
文档在线预览(三)使用js前端实现word、excel、pdf、ppt 在线预览|世界报资讯
天天看点:用一杯星巴克的钱,训练自己私有化的ChatGPT
mysql设置字段的排序规则对大小写敏感_焦点精选
51分09秒跑5公里! 96岁老太打破年龄组世界纪录
上海一老人误将地铁扶手当售卖机:拿起手机扫码
全球热头条丨AMD定制处理器瞩目:华硕ROG Ally掌机内部结构首次公布
鲁大师久用流畅度测试排名出炉:OPPO Find X6 Pro第一 天天短讯
环球新消息丨飞机起飞前男子以照顾师傅为由滞留商务舱:称不需要对号入座
神舟十六发射成功!03 你还有七个学生没毕业:网友点赞导师到太空跑数据去了
新洁能:5月29日融券净卖出4.04万股,连续3日累计净卖出4.99万股
Java实现打包压缩文件或文件夹生成zip以实现多文件批量下载
大语言模型技术原理-环球视讯
MySQL之运算符大全|每日速讯
第八单元 数组与集合
(Java)记一次通过API递归分页“爬取”网页数据的开发经历
神舟十六号发射圆满成功:大红屏再次点亮 环球新资讯
全脂/低脂可选:特仑苏纯牛奶2.7元/盒大促(商超6元)
中科院院士:电动车主可以往外卖电 一年能卖4000元-焦点简讯
世界短讯!“十项全能”是怎样一种体验?华为Mate X3绝对是大屏折叠旗舰天花板
世界视点!小米MIX Fold 3曝光:屏下摄像头+潜望长焦 再无短板
每日热讯!电力板块异动拉升 世茂能源两连板
企业内训一体化解决方案,布道师教学实训云平台【开源版上线】|今日热闻
世界快报:JS中的事件监听
最野性的福特SUV!探险者昆仑巅峰版上市:售39.98万
新资讯:媒体评“剩菜盲盒”被疯抢 越来越多年轻人喜爱:便宜、杜绝浪费食品
荣耀赵明:MagicOS 8.0会有巨大进步 某些层面跟鸿蒙流畅性不相上下-环球快资讯
天天实时:给老外来点中国车 比亚迪ATTO 3成海外多国销冠:跻进全球前10
每日简讯:PS5国内白菜价:但PS5游戏盘开始涨价了
MongoDB学习笔记:配置文件-世界今热点
天涯神贴合集(2023最新)
天天快资讯丨找数字专注力训练(找数字)
每日头条!刚被微软夸史上最可靠系统 Win11又惹祸:AMD显卡中招
天天讯息:知名电竞解说Yammers自杀 留遗书称曾遭霸凌:玩家晒视频怀念 再见了宝贝
国产电商二手剪辑卖货 拿捏欧美老外
女子用餐被收700元服务费却无服务 官方回应1对1管家服务:网友感慨
如何强制删除电脑文件内容(如何强制删除电脑文件)
收益率持续下行 同业存单市场走牛
世界快资讯丨【读财报】19家民营银行财报透视:网商银行、华瑞银行、新网银行不良率居前三
无敌性价比、能灭Zen4全家桶 Intel 14核酷睿i5-13600KF到手1969元
SSD大牌被卷到!铠侠RC20史低价:1TB 299元/2TB 599元
【世界新要闻】神舟十六号即将发射!三位航天员亮相出征仪式:要出差半年
天天热讯:今年最强LCD手机!Redmi Note 12T Pro游戏实测:《王者》《原神》几乎满帧
全球观点:是否具有派遣资格是什么意思_是否具有派遣资格
读数据压缩入门笔记02_二进制和熵
计划2030年前实现中国人登月 马斯克:中国航天比多数人想象得要强大
女子骨折做手术后左腿变长2.3厘米:鉴定十级伤残 医院拒赔
产油大国起内讧:俄罗斯低价供应大量石油 沙特都顶不住了|独家焦点
5月29日基金净值:信诚量化阿尔法股票A最新净值1.4838,跌0.3% 全球通讯
找狗(关于找狗的基本详情介绍) 当前最新
有这么个神人:被毒蛇咬173次 长期注射蛇毒 活了101岁
Flash死了!但小时候玩过的游戏 还不想死
地铁上 女子充电宝突然爆炸!现场烟雾弥漫
今晚油价或迎年内第四涨!加满一箱多花3.5元
3300秒!我国未来载人登月火箭主力发动机单台试车时长创新纪录 焦点滚动
【环球热闻】111完美邮箱_1163 com邮箱
【港股通】国泰航空(00293)据报接近订购波音777-8F货机-环球时快讯
土耳其总统埃尔多安再次赢得大选,将再度连任,外交部回应
5月29日基金净值:南方荣光A最新净值1.523,涨0.07% 当前观点
里程碑博士_里程碑的意思_今日看点
速看:武汉洪山融创智谷举办首届菁英联谊会,青年男女开启甜蜜之旅
黄果树天星洞景区小孩敲断钟乳石 工作人员称会尽快处理进行追责
国产动漫《斗罗大陆》终于迎来大结局 堪称“电影级”观影体验
德国一模特通过断骨增高将自己的身高从163增加至180厘米 手术风险极大
阿根廷国家队公布最新一期球队大名单 将由梅西与迪玛利亚领衔
东航全球首架交付国产大飞机C919顺利抵达 全球首次商业载客飞行成功
天天观点:淘宝账号登陆失败怎么回事_我的淘宝账户登录
2023.5.29Linux系统压缩打包|今日看点
环球看点!蚕豆迎丰收 “公司+专业合作社+农户”模式助农增收
蒙牛乳业宁夏工厂正式落成投产 为全球首座乳业全数智化工厂-天天快报
华硕发布49英寸QD-OLED带鱼屏显示器:5K分辨率 1000nits亮度
热点评!童年回忆满满 《王者荣耀》三款电玩新皮肤来了
全球今亮点!能玩破解游戏!任天堂回应下架《海豚模拟器》
全球快看点丨红蜘蛛新一代校色仪Spyder X2/X2 Ultra发布:最高支持2000nit亮度
今日看点:12)自定义函数
文心一言 VS 讯飞星火 VS chatgpt (25)-- 算法导论4.2 7题 天天实时
【时快讯】100克黄焖鸡调料可以做几斤鸡肉?