【项目实践day06】JWT令牌相关

news2025/1/22 8:08:56

什么是JWT

简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。
由于数字签名的存在,这些信息是可靠的。

  1. jwt就是将原始的json数据格式进行了安全的封装,这样就可以直接基于jwt在通信双方安全的进行信息传输了。
  2. 简洁:是指jwt就是一个简单的字符串。可以在请求参数或者是请求头当中直接传递。
  3. 自包含:指的是jwt令牌,看似是一个随机的字符串,但是我们是可以根据自身的需求在jwt令牌中存储自定义的数据内容。如:可以直接在jwt令牌中存储用户的相关信息

JWT组成

  1. Header(头)
    1. 记录令牌类型、签名算法等。 例如:{“alg”:“HS256”,“type”:“JWT”}
  2. Payload(有效载荷)
    1. 携带一些自定义信息、默认信息等。 例如:{“id”:“1”,“username”:“Tom”}
  3. Signature(签名)
    1. 防止Token被篡改、确保安全性。将header、payload,并加入指定秘钥,通过指定签名算法计算而来

记录令牌类型、签名算法等。 例如:{“alg”:“HS256”,“type”:“JWT”}

应用场景

登录

  1. 浏览器发起请求执行登录操作,如果成功,生成jwt令牌,并将其返回给前端
  2. 前端拿到jwt令牌后,将其存储,后续每次请求都会将JWT令牌携带到服务器
  3. 服务器统一拦截请求后,先判断JWT令牌是否存在且有效,如果是,放行。
    在这里插入图片描述

项目中实现

  1. 导入依赖pom.xml
  2. 生成JWT令牌的接口 与 对token进行解密的方法 JwtUtil.java
  3. 书写jwt令牌校验的拦截器JwtTokenAdminInterceptor.jsva
  4. 将第二步骤 写的 jwt令牌校验的拦截器 放入配置类WebMvcConfiguration
    1. 注册自定义拦截器
    2. 并指定要拦截的请求路径
    3. 以及需要排除哪些请求
  5. 在用户登录的时候需要利用JwtUtil.java为其生成令牌——在负责用户登录的controller中实现

注意:JWT令牌中存储着用户的id信息,如果后续需要的话,可以在校验令牌的时候,将id信息放入LocalThread的封装方法BaseContext,以便后续直接获得当前用户的id

  • 适用于管理员插入某些信息,需要记录一下插入人(管理员)的id等情况
  • baseContext是自己定义的类,里面新建了LocalThread对象,里面只有几个方法:插入当前id,得到当前id

参考链接

用户登录
微信登录

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全栈的自我修养 ———— 让uniapp开发更加舒服!!(与别的博主思路不一样,小编这里只讲实用的,直提重点!)

小编是web的,然后现在开始接手微信小程序,有很多不习惯的的地方,经过一段时间的使用,部分得到了妥善的解决方法 一、用vscode开发小程序二、组件库的选择三、注意 一、用vscode开发小程序 发现用Hbuilder开发小程序有很多不习惯的…

odoo17开发教程(8):设置界面UI的字段属性

目录 添加字段 给字段设置只读和不可拷贝 给字段添加默认值 保留字段 本节目标:在本文末尾,售价(selling price)应为只读值,卧室数量(bedrooms)和可用日期(availability date)应为默认值。此外,在复制记录时,售价和…

day09-Mybatis

一、Mybatis 基础操作 1 需求 功能列表: 查询 根据主键ID查询 条件查询新增更新删除 根据主键ID删除 根据主键ID批量删除 2 准备 实施前的准备工作: 准备数据库表创建一个新的 springboot 工程,选择引入对应的起步依赖(mybatis、…

【DevOps趣味篇】你为什么要数程序员的代码行数?

【DevOps趣味篇】你为什么要数程序员的代码行数? 目录 【DevOps趣味篇】你为什么要数程序员的代码行数?代码行数统计方法手动计数代码行数统计命令使用语句统计代码行数IL指令 需要计算代码行数吗? 推荐超级课程: Docker快速入门…

「Swift」AttributedString常见使用方法

前言:AttributedString是Apple推出的可以实现单个字符或字符范围带相应属性的字符串。属性提供了一些文本特性,可以让文本展示的样式更加丰富。在日常开发过程中,我通常用于同一个Label中包含不同的字体大小或字体颜色的样式编写中。 使用举…

002——编译鸿蒙(Liteos -a)

目录 一、鸿蒙是什么 二、Kconfig 2.1 概述 2.2 编译器 2.3 make使用 本文章引用了很多韦东山老师的教程内容,算是我学习过程中的笔记吧。如果侵权请联系我。 一、鸿蒙是什么 这里我补充一下对鸿蒙的描述 这张图片是鸿蒙发布时使用的,鸿蒙是一个很…

数据预处理:重复值

数据重复值处理 数据重复值出现情况重复的记录用于分析演变规律重复的记录用于样本不均衡处理重复的记录用于检测业务规则问题 数据重复值出现情况 数据集中的重复值包括以下两种情况: 数据值完全相同的多条数据记录。这是最常见的数据重复情况。数据主体相同但匹…

ConKI: Contrastive Knowledge Injection for Multimodal Sentiment Analysis

文章目录 ConKI:用于多模态情感分析的对比知识注入文章信息研究目的研究内容研究方法1.总体结构2.Encoding with Knowledge Injection2.1 Pan-knowledge representations2.2 Knowledge-specific representations 3.Hierarchical Contrastive Learning4.损失函数5.训…

五个跟进方法,让你的老外客户不再跑路!

一、不同客户该怎么跟进? 1.已报价的客户 在向客户报过价之后,过几天要记得再询问一下对方是否收到了报价,如果没收到就提醒一下客户必要时将价格再发过去,如果客户已收到还要再进一步了解其对于报价的想法。 如果客户有兴趣也有需要&…

外包2月,技术倒退警钟长鸣。。。。。

曾经的我,作为一名大专生,在湖南某软件公司从事功能测试工作近四年。日复一日的工作让我陷入舒适区,不思进取。直到今年8月,我才意识到自己的技术停滞不前,女友的离开更是让我痛定思痛,决定改变现状&#x…

如何选择合适的奶瓶?五大超实用选购技巧,新手宝妈必看

奶瓶什么品牌好?奶瓶是每个新生宝宝都需要用到的辅喂产品,然而市场上许多网红品牌为了赚快钱,往往凭借外观设计、性价比和广告营销来吸引消费者。这些品牌由于缺乏专业技术,往往没有对选材用料和安全性进一步的优化,从…

使用jQuery的autocomplete实现数据查询一次,联想自动补全

书接上回,上次说到在jsp页面中,通过监听输入框的数值变化,实时查询数据库,得到返回值使用autocomplete属性自动补全,实现一个联想补全辅助操作,链接:使用jquery的autocomplete属性实现联想补全操…

Redis数据结构对象中的类型检查与命令多态、内存回收

类型检查与命令多态 概述 redis中用于操作键的命令基本上可以分为两种类型。其中一种命令可以对任何类型的键执行,比如说DEL命令、EXPIRE命令、RENAME命令、TYPE命令、OBJECT命令等. 而另一种命令只能对特定类型的键执行,比如说 1.SET、GET、APPEND、…

Vector Magic:矢量图像转换神器,轻松驾驭Mac与Win双平台

在数字化时代,图像已经成为我们生活和工作中不可或缺的一部分。无论是设计师、艺术家,还是普通用户,都对图像质量有着极高的要求。而矢量图像,以其清晰度高、可无限放大的特点,逐渐受到广大用户的青睐。今天&#xff0…

打破沟通壁垒:跨部门需求冲击与IT部门的应对智慧

引言 在快节奏、高要求的互联网行业,跨部门间的有效沟通是确保项目顺利进行和公司业务稳定发展的基石。然而,需求突袭往往成为打乱这一稳定局面的重要因素。 事件的背景 作为一IT部门负责人,在跨部门的领导层沟通会议上,一个在事…

深度解析深度学习中的长短期记忆网络(LSTM)(含代码实现)

在深度学习中,长短期记忆网络(LSTM)是一种强大的循环神经网络结构,能够更好地处理长序列数据并减轻梯度消失的问题。本文将介绍LSTM的工作原理,并使用PyTorch实现一个简单的LSTM模型来展示其在自然语言处理中的应用。 …

使用 wxWidgets 的 wxAUI 界面库,创建功能丰富的软件界面

目录 前言: wxAUI 的优势: 使用 wxAUI 创建软件界面的步骤: 以下是一些使用 wxAUI 创建软件界面的技巧: 案例: 总结: 前言: 软件界面是用户与软件交互的重要桥梁,一个好的界面…

应用测评要求解读-三级

身份鉴别: a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换; 1. 在未登录状态下尝试直接访问任意操作页面或功能,查看是否具有登陆界面。 2.询问或者测试…

《你就是孩子最好的玩具·升级版》笔记(四)给父母的话

经典摘录 两岁到三岁之间是最具有挑战性的一段时期。在这个阶段,你的工作最多,责任也最大,因为你将极大地影响并决定孩子的情感发育。“当妈妈本来就不容易,你并不需要时时刻刻都开心,这很正常。” 【●反省自己生气的…

Vue技能树总结01

Vue vs React 相似之处: 它们都有使用 Virtual DOM;提供了响应式(Reactive)和组件化(Composable)的视图组件。将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库。React 比 Vue 有更…