会话跟踪方案: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是还有多久过期

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/406670.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

河南萌新联赛2024第(六)场:郑州大学(补题ABCDFGIL)

文章目录 河南萌新联赛2024第&#xff08;六&#xff09;场&#xff1a;郑州大学A 装备二选一&#xff08;一&#xff09;简单介绍&#xff1a;思路&#xff1a;代码&#xff1a; B 百变吗喽简单介绍&#xff1a;思路&#xff1a;代码&#xff1a; C 16进制世界简单介绍&#x…

【时时三省】(C语言基础)指针进阶2

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 数组指针 是一种指针&#xff0d;是指向数组的指针 整型指针&#xff0d;是指向整形的指针 字符指针&#xff0d;是指向字符的指针 什么叫做数组指针 上面的整形指针跟字符指针只需要&am…

【鸿蒙学习】HarmonyOS应用开发者高级认证 - 一次开发,多端部署

一、学习目的 掌握鸿蒙的核心概念和端云一体化开发、数据、网络、媒体、并发、分布式、多设备协同等关键技术能力&#xff0c;具备独立设计和开发鸿蒙应用能力。 二、总体介绍 HarmonyOS 系统面向多终端提供了“一次开发&#xff0c;多端部署”&#xff08;后文中简称为“一…

日志审计-graylog ssh登录超过6次告警

Apt 设备通过UDP收集日志&#xff0c;在gray创建接收端口192.168.0.187:1514 1、ssh登录失败次数大于5次 ssh日志级别默认为INFO级别&#xff0c;通过系统rsyslog模块处理&#xff0c;日志默认存储在/var/log/auth.log。 将日志转发到graylog vim /etc/rsyslog.conf 文件末…

深入探讨SD NAND的SD模式与SPI模式初始化

在嵌入式系统和存储解决方案中&#xff0c;SD NAND的广泛应用是显而易见的。CS创世推出的SD NAND支持SD模式和SPI模式&#xff0c;这两种模式在功能和实现上各有优劣。在本文中&#xff0c;我们将深入探讨这两种模式的初始化过程&#xff0c;并比较它们在不同应用场景下的优劣&…

MySQL 配置免密码登陆(mysql_config_editor Configuration)

当使用mysql, mysqldump, mysqladmin等客户端连接MySQL数据库服务器时&#xff0c;需要提供用户凭证信息。你可以在每次连接时都输入连接信息&#xff08;用户名/密码/地址/端口等&#xff09;或者将用户信息保存在my.cnf配置文件的[client]模块。 第一种方式每次都输入用户密…

深度学习 --- VGG16各层feature map可视化(JupyterNotebook实战)

VGG16模块的可视化 VGG16简介&#xff1a; VGG是继AlexNet之后的后起之秀&#xff0c;相对于AlexNet他有如下特点&#xff1a; 1&#xff0c;更深的层数&#xff01;相对于仅有8层的AlexNet而言&#xff0c;VGG把层数增加到了16和19层。 2&#xff0c;更小的卷积核&#xff01;…

数据库MySQL多表设计、查询

目录 1.概述 2.一对多 3.一对一 4.多对多 5.多表查询 5.1内连接 5.2外连接 5.3子查询 1.概述 项目开发中,在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各个…

网络编程TCP与UDP

TCP与UDP UDP头&#xff1a; 包括源端口、目的地端口、用户数据包长度&#xff0c;检验和 数据。 typedef struct _UDP_HEADER {unsigned short m_usSourPort;    // 源端口号16bitunsigned short m_usDestPort;    // 目的端口号16bitunsigned short m_usLen…

Docker!!!

⼀、Docker 1、Docker介绍.pdf 1、Docker 是什么&#xff1f; Docker 是⼀个开源的应⽤容器引擎&#xff0c;可以实现虚拟化&#xff0c;完全采⽤“沙盒”机制&#xff0c;容器之间不会存在任何接⼝。Docker 通过 Linux Container&#xff08;容器&#xff09;技术将任意类型…

Ubuntu 安装 mysql 与 远程连接配置

1、安装 mysql ubuntu 默认安装 8.0 版本&#xff1a; sudo apt install mysql-server安装过程中 提示 是否继续操作 y 即可 2、使用ubuntu 系统用户 root 直接进入 mysql 切换至 系统用户 su root 输入命令 可直接进入 mysql: mysql3、创建一个允许远程登录的用户 创建 …

《Python编程:从入门到实践》笔记(一)

一、字符串 1.修改字符串大小写 title()以首字母大写的方式显示每个单词&#xff0c;即将每个单词的首字母都改为大写&#xff0c;其他的改为小写。 upper()将字母都改为大写&#xff0c;lower()将字母都改为小写。 2.合并(拼接)字符串 Python使用加号()来合并字符串。这种合…

超容易出成果的方向:多模态医学图像处理!

哈喽朋友们&#xff0c;今天给大家推荐一个比较容易出成果的方向&#xff1a;多模态医学图像处理。 众所周知&#xff0c;多模态如今火的一塌糊涂&#xff0c;早就成了很多应用科学与AI结合的重要赛道&#xff0c;特别是在医学图像处理领域。 由此提出的多模态医学图像处理融合…

「Java 项目详解」API 文档搜索引擎(万字长文)

目录 运行效果 一、项目介绍 一&#xff09;需求介绍 二&#xff09;功能介绍 三&#xff09;实现思路 四&#xff09;项目目标 二、前期准备 一&#xff09;了解正排索引 二&#xff09;了解倒排索引 三&#xff09;获取 Java API 开发文档 四&#xff09;了解分词…

二叉树检验:算法详解

问题描述 /** 检查二叉树是否为有效的二叉搜索树有效的二叉搜索树满足左子树的节点值都小于根节点值&#xff0c;右子树的节点值都大于根节点值并且左右子树也必须是有效的二叉搜索树param root 二叉树的根节点return 如果二叉树是有效的二叉搜索树&#xff0c;则返回true&…

火绒使用详解 为什么选择火绒?使用了自定义规则及其高级功能的火绒,为什么能吊打卡巴斯基,360,瑞星,惠普联想戴尔的电脑管家等?

目录 前言 必看 为什么选择火绒&#xff1f; 使用了自定义规则及其高级功能的火绒&#xff0c;为什么能吊打卡巴斯基&#xff0c;360&#xff0c;瑞星&#xff0c;惠普联想戴尔的电脑管家等&#xff1f; 原因如下&#xff1a; 火绒的主要优势 1. 轻量化设计 2. 强大的自…

Prism-学习笔记1-安装Prism

安装Prism 在VS2022中安装如下图&#xff1a; 2. 搜索Prism&#xff0c;安装Prism&#xff1a;&#xff08;ps&#xff1a;如果安装很慢&#xff0c;直接往上搜关键字 Prism template Pack 下载&#xff0c;或者这里我下载好的Prism包&#xff0c;提取码&#xff1a;bi7c&…

D. Water Tree

模板题 #include<iostream> #include<vector> using namespace std; const int N5e59; int n; //树剖 //1.转成线性部分 vector<int> e[N]; void add(int u,int v){e[u].push_back(v);e[v].push_back(u); } int fa[N],dep[N],sz[N],wc[N]; void dfs1(int u,…

了解芯片的四大主流架构

四大主流芯片架构&#xff0c;犹如科技领域的四大支柱&#xff0c;各自矗立于技术创新的巅峰。这四大架构——X86、ARM、RISC-V与MIPS&#xff0c;不仅是芯片设计的基石&#xff0c;更是推动信息技术进步的强大动力。 一、芯片架构是什么&#xff1f; 芯片架构是指对芯片的类…

记录一次SQL 查询 LEFT JOIN 相关优化

记录一次 LEFT JOIN 相关优化 1 环境说明2 sql 在dm库查询用时30秒2.1 sql 语句2.2 sql 执行计划 3 调优数据库参数3.1 使用hint 调整数据库参数3.2 hint 的执行计划 4 永久修改数据库参数5 参数说明6 达梦数据库学习使用列表 1 环境说明 某项目的公文办公系统在生产环境刚部署…