会话跟踪方案:Cookie Session Token
什么是会话技术?

Cookie
以登录为例,用户在浏览器中将账号密码输入并勾选自动登录,浏览器发送请求,请求头中设置Cookie:userName:'张三' ,password:'1234aa' ,若登录成功,服务器将这个cookie保存下来,后续用户登录,服务器向客户端(即浏览器)发送之前存储的用户cookie自动登录。

Session
底层还是用cookie,每个浏览器对应一个session,用户通过浏览器发送请求,请求头中携带sessionId来区分要访问哪个session

令牌技术jwt

令牌格式

前面两部分是基于Base64编码的,最后一部分是基于编码算法(这里是HS256)和密钥的
使用流程
以自动登录为例,用户输入账号密码后请求服务器进行登录,服务器查询数据库校验账号密码成功后生成令牌(token),并把token发给用户,浏览器要将这个令牌记录下来,后续发送请求时携带这个令牌。

后端人员需要做的事👇
编写生成token的方法,在请求响应成功后将token响应给服务端
1.导入依赖
<!-- token--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency><!-- 基于java,需要引入这个--><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.4.0</version></dependency>
2.写一个JwtUtil
public class JwtUtil {private static final String secretKey="odpodpodp";//密钥 注意这个密钥不能太短private static final int expireTime=3600*1000;//有效期为1小时 (单位:毫秒)//生成tokenpublic static String buildToken(int userId,String password){HashMap<String, Object> map = new HashMap<>();map.put("userId",userId);map.put("password",password);String token=Jwts.builder().addClaims(map)//载荷(payload 即要加密的json字符串) 不是setClaims!!.signWith(SignatureAlgorithm.HS256,secretKey)//指定加密算法和密钥.setExpiration(new Date(currentTimeMillis()+expireTime))//设置有效期为1h.compact();//生成return token;}//jwt校验public static Claims parseJwt(String token){Claims claims = (Claims) Jwts.parser().setSigningKey(secretKey)//指定密钥.parse(token).getBody();//生成json格式的mapreturn claims;}}
前端人员需要做的事👇
浏览器可以把服务器响应的token以键值对的形式存储在localStorage中

后续发送请求时携带token到后端去解析

测试一下
控制器
@RestController
//登录注册模块控制器
@RequestMapping("login")
public class LoginController {@PostMapping("/testToken")public Result testToken(@RequestBody User user){int userId = user.getUserId();String password = user.getPassword();if(true)//校验账号密码的逻辑{String token = JwtUtil.buildToken(userId, password);System.out.println("token:"+token);//测试一下解码tokenSystem.out.println("解码token...");System.out.println(JwtUtil.parseJwt(token));return new Result(Code.RETURN_TOKEN_OK,"登录成功,返回token",token);}return new Result(Code.RETURN_TOKEN_FAIL,"登录失败,请验证账号密码",null);}
}
用postman访问接口

控制台输出
exp是还有多久过期

相关文章:
会话跟踪方案:Cookie Session Token
什么是会话技术? Cookie 以登录为例,用户在浏览器中将账号密码输入并勾选自动登录,浏览器发送请求,请求头中设置Cookie:userName:张三 ,password:1234aa ,若登录成功,服务器将这个cookie保存…...
jemeter压力测试入门
1. 安装jemeter的压缩包并且解压 点击运行 2. 添加线程组 3. 线程组的参数设置 4. 添加http请求 5. 填写请求信息 添加监听器——结果树(结果),聚合报告(吞吐量报告) 6. 通过cvs数据文件设置,配置元件&…...
SpringBoot3 简单集成 Spring AI 并使用
文章目录 准备JDK17api key 创建项目编写配置文件创建controller启动并测试角色预设流式响应\异步响应ChatModel(聊天模型)ImageModel(文生图)文生语音语言翻译多模态Function Calling (函数调用第三方API)…...
【C/C++】程序设计基础知识(数据类型与表达式、控制语句、数组与结构)
【C/C】程序设计基础知识(数据类型与表达式、控制语句、数组与结构) 一、数据类型与表达式1.1C语言符号1.2C语言运算符1.3数据类型1.4常量与变量1.5基本运算1.6优先级和结合性1.7输入与输出 二、控制语句2.1顺序结构2.2选择结构2.3循环结构2.4break,cont…...
python库——sklearn的关键组件和参数设置
文章目录 模型构建线性回归逻辑回归决策树分类器随机森林支持向量机K-近邻 模型评估交叉验证性能指标 特征工程主成分分析标准化和归一化 scikit-learn,简称sklearn,是Python中一个广泛使用的机器学习库,它建立在NumPy、SciPy和Matplotlib这些…...
CAS-ViT实战:使用CAS-ViT实现图像分类任务(一)
摘要 在视觉转换器(Vision Transformers, ViTs)领域,随着技术的不断发展,研究者们不断探索如何在保持高效性能的同时,降低模型的计算复杂度,以满足资源受限场景(如移动设备)的需求。…...
处理数组下标的代码
以下是某个Ada编译器生成的一段汇编代码: mov ecx, eaxmov ebx, eaxsar ebx, 1Fhmov edx, ebxsar edx, 1Fhnot edxmov eax, edxsar eax, 1Fhand ecx, eax以上代码相当于以下C代码: ecx ((~(eax >> 62) >&…...
数学建模算法总结
数学建模常见算法总结 评价决策类模型 层次分析法 层次分析法根据问题的性质和要达到的总目的,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同层次聚集组合,形成一个多层次的分析结构模型,从…...
代码随想录算法训练营第五十五天 | 并查集理论基础、107. 寻找存在的路径
一、并查集理论基础 文章链接:并查集理论基础 | 代码随想录 (programmercarl.com) 二、107. 寻找存在的路径 题目连接:107. 寻找存在的路径 (kamacoder.com) 文章讲解:代码随想录 (programmercarl.com)——107. 寻找存在的路径...
ROS_package 、CMakeLists.txt、package.xml、ROS_node之间的关系
一、整体框架结构 二、关系描述 1、ROS.cpp 里面初始化了一个ROS节点,注意我的源文件里面只初始化了一个节点 // ROS.cpp #include "ros/ros.h"int main(int argc, char **argv) {ros::init(argc, argv, "node_name"); // 指定节点名称为 &…...
嵌入式学习----网络通信之TCP协议通信
TCP(即传输控制协议):是一种面向连接的传输层协议,它能提供高可靠性通信(即数 据无误、数据无丢失、数据无失序、数据无重复到达的通信) 适用情况: 1. 适合于对传输质量要求较高,以及传输大量数据 的通信。…...
【信息学奥赛一本通】1007:计算(a+b)×c的值
1007:计算(ab)c的值 时间限制: 1000 ms 内存限制: 65536 KB 提交数:184662 通过数: 150473 【题目描述】 给定3个整数a、b、c,计算表达式(ab)c的值。 【输入】 输入仅一行,包括三个整数a、b、c, 数与数之间以一个空格分开。(-10,…...
Linux系统之部署俄罗斯方块网页小游戏(三)
Linux系统之部署俄罗斯方块网页小游戏(三) 一、小游戏介绍1.1 小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、检查本地环境3.1 检查系统版本3.2 检查系统内核版本3.3 检查软件源四、安装Apache24.1 安装Apache2软件4.2 启动apache2服务4.3 查看…...
XSS- - - DOM 破坏案例与靶场
目录 链接靶场: 第一关 Ma Spaghet 第二关 Jefff 第三关 Ugandan Knuckles 第四关 Ricardo Milos 第五关 Ah Thats Hawt 第六关 Ligma 第七关 Mafia 第八关 Ok, Boomer 链接靶场: XS…...
Arco Design,字节跳动出品的UI库
Arco Design是字节跳动出品的UI库,支持Vue和React。还是比较美观的。并且Arco Design还提供了中后台模版。但是通过提供的arco-cli连接了github,正常情况下无法构建。但效果还是挺好的,下面是效果图: 更新: 传送门可…...
常用API:object
文章目录 Object类toString()方法equals()方法总结其他方法 黑马学习笔记 Object类 是所有类的父类,所有的类都默认继承Object类。Java中所有的类的对象都可以直接使用Object类提供的一些方法。 toString()方法 equals()方法 默认是判断两个对象的地址 也是判断…...
【计算机三级-数据库技术】数据库后台编程技术
内容提要 1、掌握存储过程的定义与使用 2、掌握用户定义函数的创建与使用 3、掌握触发器的定义与使用 4、掌握游标的定义与使用 第一节 存储过程 使用T-SQL语言编写,有两种方式存储: 在客户端存储代码通过客户端程序或SQL命令向DBMS发出操作请求&…...
线程的控制
互斥 概念 互斥:在多线程中对临界资源(公共资源)的排他性访问。 互斥机制 >>互斥锁 >>保证临界资源的访问控制。 通过使用互斥锁,可以确保某一时刻只有一个线程能够访问临界资源,从而避免竞争条件(race condition…...
WPS宏实现Sheet页拆分功能
源表格首列名称中一样的分别创建该名称的Sheet页,首先把首列复制导致Sheet2页,根据去重后的值创建新的Sheet页,把源表格数据复制到新建的Sheet页,遍历删除不需要的留下需要的就完成了。 function JIn521() { //设置工作…...
【图像超分】论文精读:AdaBM: On-the-Fly Adaptive Bit Mapping for Image Super-Resolution
第一次来请先看这篇文章:【超分辨率(Super-Resolution)】关于【超分辨率重建】专栏的相关说明,包含专栏简介、专栏亮点、适配人群、相关说明、阅读顺序、超分理解、实现流程、研究方向、论文代码数据集汇总等) 文章目录 前言Abstract1. Introduction2. Related works3. Pr…...
告别AT指令:在STM32上移植ESP8266 RTOS SDK,更稳定地接入米家智能插座
STM32与ESP8266 RTOS深度整合:构建高可靠米家智能插座开发框架 从AT指令到RTOS SDK的技术跃迁 在智能家居设备开发领域,ESP8266模块与STM32的组合堪称经典搭配。然而,大多数开发者仍停留在使用AT指令集进行基础通信的阶段,这种方案…...
Nginx反向代理实战:不改代码轻松解决前后端跨域问题(附完整配置模板)
Nginx反向代理实战:不改代码轻松解决前后端跨域问题(附完整配置模板) 前后端分离架构已成为现代Web开发的主流模式,但随之而来的跨域问题却让不少开发者头疼。想象一下这样的场景:你的前端运行在https://frontend.com&…...
3步搞定黑苹果配置:OpCore-Simplify让EFI构建效率提升80%的智能方案
3步搞定黑苹果配置:OpCore-Simplify让EFI构建效率提升80%的智能方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否经历过这些痛苦…...
OpenClaw数据安全实践:Qwen3-32B+RTX4090D本地化处理敏感财报
OpenClaw数据安全实践:Qwen3-32BRTX4090D本地化处理敏感财报 1. 为什么金融从业者需要本地化AI处理 去年我在帮一家私募基金做季度财报分析时,遇到了一个尴尬场景:当我把客户PDF财报上传到某公有云AI平台提取关键指标后,第二天就…...
2026 ASNT-TC-1A 无损检测 Ⅱ/Ⅲ 级认证指南|API/ASME 认证必备 + 报考实操
一、行业刚需:为何 ASNT-TC-1A 资质是工业检测领域的「硬通货」在石油天然气、压力容器、钢结构焊接等工业领域,无损检测(NDT)是产品质量保障的核心环节,而ASNT-TC-1A作为美国无损检测学会制定的人员资格鉴定和认证标准…...
TuShare实战(二)高效构建多股数据面板
1. 为什么需要多股数据面板 做量化投资的朋友都知道,数据准备是最基础也最耗时的环节。想象一下,你正在研究一个投资策略,需要同时分析5只股票的历史走势。如果每次都要单独获取、整理每只股票的数据,那效率实在太低了。这就是为什…...
学习如何聚合零样本大型语言模型代理以进行企业披露分类
摘要本文研究一个轻量级训练聚合器是否能够将多样化的零样本大语言模型判断整合为更强的下游信号,用于公司披露分类。零样本大语言模型无需针对特定任务进行微调即可阅读披露文本,但其预测结果常因提示词、推理方式和模型家族的不同而存在差异。我采用一…...
s2-pro效果展示:会议纪要转语音+重点语句强调式播报实录
s2-pro效果展示:会议纪要转语音重点语句强调式播报实录 1. 专业语音合成新体验 s2-pro作为Fish Audio开源的专业级语音合成模型镜像,正在重新定义文本转语音的标准。不同于常见的聊天式语音工具,它专注于提供高质量的语音合成服务ÿ…...
EDK II代码质量门禁报告:全面解析门禁检查结果与最佳实践
EDK II代码质量门禁报告:全面解析门禁检查结果与最佳实践 【免费下载链接】edk2 EDK II 项目地址: https://gitcode.com/gh_mirrors/ed/edk2 EDK II作为现代、功能丰富的跨平台UEFI和PI规范固件开发环境,其代码质量门禁系统是确保固件可靠性和安全…...
拒了一个只要1.8万的45岁大佬
因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享点击关注#互联网架构师公众号,领取架构师全套资料 都在这里0、2T架构师学习资料干货分上一篇:2T架构师学习资料干货分享大家好,我是互联网架构师ÿ…...
