会话跟踪方案: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…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...
