【JavaWeb】Jwt令牌简单使用及代码示例

Jwt令牌介绍

Jwt令牌主要用于登录操作中,常用来进行身份认证
jwt令牌分为三个部分(不同部分之间用点分割):

  • 由base64编码的头部信息,其中储存着Jwt所使用的摘要算法
  • 由base64编码的中间部分用户自定义信息,用户可以在中间部分进行数据传送
  • 对第一部分和第二部分的摘要信息(摘要算法使用第一部分所说明的算法)

三部分的示例:

eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoi6YeR5bq4IiwiaWQiOjEsImV4cCI6MTcwOTM4OTExMywidXNlcm5hbWUiOiJqaW55b25nIn0.uhrPL_fN_DI6jl25YecbGid7YyIq4jBhQYLbWNUltdg

通过base64解析后的结果:

{"alg":"HS256"}
{"name":"金庸","id":1,"exp":1709389113,"username":"jinyong"}
.���|���9v凜lh�팈����mcT��`

就长这样,在格式上,前面两部分用json传送,最后一部分为摘要
注意:
这里使用的不是加密算法而是摘要算法,攻击者可以看到Jwt令牌中所传递的值,但是由于摘要算法的存在,攻击者不能修改或者伪造值。不可用于传输机密数据!

代码实现

public class JWTUtils {private static Long expire = 43200000L;private static String key = "zhang";// 生成Gwt令牌public static String genGWT(Map<String, Object> claims) {String jwt = Jwts.builder().signWith(SignatureAlgorithm.HS256, key).setClaims(claims).setExpiration(new Date(System.currentTimeMillis() + expire)).compact();return jwt;}// 解析令牌public static Map<String, Object> parseJwt(String jws) {Map<String, Object> claims = Jwts.parser().setSigningKey(key).parseClaimsJws(jws).getBody();return claims;}}

代码简单解释

  • signWith:设置加密算法和秘钥
  • setClaims:设置中间传送内容
  • setExpiration:设置令牌过期时间
  • compact:这个不知道干啥的,大佬看见之后麻烦在评论区解答一下~

  • setSigningKey:传入秘钥
  • parseClaimsJws:传入字符串(注意这里是jws,而不是jwt, JSON Web String)
  • getBody:得到中间自定义的数据

写在后面

  • 关于算法:博主本身就是学安全的,对这个比较感兴趣,这里的算法为对称算法,而不是公钥算法(非对称)
  • 为什么不把数据加密,而是进行摘要?:机密数据交给post方式进行传输,post有对应的加密,jwt负责非机密数据,故不需要加密。

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

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

相关文章

stm32f103zet6笔记1-led工程

1、选择串口调试 2、LED0连接到PB5&#xff0c;PB5设置为推挽输出。PE5同理。 3、生成成对的.c,.h文件。 4、debugger选择j-link。 5、connection选择SWD。 6、编写bsp_led.c,bsp_led.h文件。 7、下载调试&#xff0c;可以看到LED0 500ms闪烁一次&#xff0c;LED1 1000ms闪烁一…

浅谈一个CTF中xss小案例

一、案例代码 二、解释 X-XSS-Protection: 0&#xff1a;关闭XSS防护 之后get传参&#xff0c;替换过滤为空&#xff0c;通过过滤保护输出到img src里面 三、正常去做无法通过 因为这道题出的不严谨所以反引号也是可以绕过的 正常考察我们的点不在这里&#xff0c;正常考察…

Java编程之方法的重写1

继承并不只是扩展父类的功能&#xff0c;还可以重写父类的成员方法。重写&#xff08;还可以称为覆盖&#xff09;就是在子类中将父类的成员方法名称保留&#xff0c;重新编写父类成员方法的实现内容&#xff0c;更改成员方法的存储权限&#xff0c;或是修改成员方法的返回值类…

Unity之街机捕鱼

目录 &#x1f62a;炮台系统 &#x1f3b6;炮口方向跟随鼠标 &#x1f3b6;切换炮台 &#x1f62a;战斗系统 &#x1f3ae;概述 &#x1f3ae;单例模式 &#x1f3ae;开炮 &#x1f3ae;子弹脚本 &#x1f3ae;渔网脚本 &#x1f3ae;鱼属性信息的脚本 &#x1f6…

华为OD机试真题-求幸存数之和【题解分享】

原题内容 给一个正整数列nums&#xff0c;一个跳数jump&#xff0c;及幸存数量left。运算过程为:从索引为0的位置开始向后跳&#xff0c;中间跳过 J 个数字&#xff0c;命中索引为 J1 的数字&#xff0c;该数被敲出&#xff0c;并从该点起跳&#xff0c;以此类推&#xff0c;直…

叠罗汉游戏

题目描述 农场的N头奶牛喜欢玩叠罗汉游戏&#xff0c;就是几头奶牛1头奶牛接着1头奶牛的站成一柱子形状。不过奶牛的力量不一样&#xff0c;用数值Ci表示第i头奶牛它的上面最多可以站多少头奶牛&#xff0c;问这些奶牛最少可以站成几个柱子形状。 输入格式 输入文件名&#…

怎样获得CNVD原创漏洞证书

1. 前言 因为工作变动&#xff0c;我最近把这一年多的工作挖漏洞的一些工作成果提交到了CNVD漏洞平台&#xff08;https://www.cnvd.org.cn/&#xff09;&#xff0c;获得了多张CNVD原创漏洞证书。本篇博客讲下怎么获得CNVD原创漏洞证书&#xff0c;以供大家参考。 2. CNVD原创…

Canvas笔记03:Canvas元素功能、属性、获取、原理等一文讲透

hello&#xff0c;我是贝格前端工场&#xff0c;最近在学习canvas&#xff0c;分享一些canvas的一些知识点笔记&#xff0c;本期分享canvas元素的知识&#xff0c;欢迎老铁们一同学习&#xff0c;欢迎关注&#xff0c;如有前端项目可以私信贝格。 Canvas元素是HTML5中的一个重…

基于Intel x86的轨道交通/印度地铁自动售检票(AFC)系统

印度孟买地铁3号线 目前&#xff0c;印度孟买3号线正在全面建设中&#xff0c;这条全长33.5公里的线路将是孟买第一条地下地铁线路&#xff0c;设有27个地下车站和1个地面车站&#xff0c;此条线路的成功通车将连接其他地铁线路、单轨铁路、郊区铁路、城际铁路和孟买机场等&am…

解决prettier 报错 Delete `␍`

根目录&#xff08;么有的话&#xff09;新建 .prettierrc.js配置文件 module.exports {tabWidth: 2,semi: true,printWith: 80,singleQuote: true,quoteProps: consistent,htmlWhitespaceSensitivity: strict,vueIndentScriptAndStyle: true,// 主要是最后一行endOfLine:aut…

Ubuntu环境使用docker构建并运行SpringBoot镜像

今天Ubuntu环境使用docker构建并运行SpringBoot镜像&#xff0c;看文章之前建议先查看安装流程: Linux环境之Ubuntu安装Docker流程 一、镜像打包过程及执行 1、创建一个测试目录 mkdir javaDemo 2、springBoot的包复制到此目录下 cp demo1-0.0.1-SNAPSHOT.jar /data/app/…

计算机网络实验 基于ENSP的协议分析

实验二 基于eNSP的协议分析 一、实验目的&#xff1a; 1&#xff09;熟悉VRP的基本操作命令 2&#xff09;掌握ARP协议的基本工作原理 3&#xff09;掌握IP协议的基本工作原理 4&#xff09;掌握ICMP协议的基本工作原理 二、实验内容&#xff1a; 1、场景1&#xff1a;两台PC机…

React-子传父

1.概念 说明&#xff1a;React中子组件向父组件传递数据通常涉及回调函数和状态提升等方法。 2.代码实现 2.1绑定事件 说明&#xff1a;父组件绑定自定义事件 <Son onGetSonMsg{getMsg}></Son> 2.2接受事件 说明&#xff1a;子组件接受父组件的自定义事件名称…

前端食堂技术周刊第 114 期:Interop 2024、TS 5.4 RC、2 月登陆浏览器的新功能、JSR、AI SDK 3.0

美味值&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f; 口味&#xff1a;凉拌鸡架 食堂技术周刊仓库地址&#xff1a;https://github.com/Geekhyt/weekly 大家好&#xff0c;我是童欧巴。欢迎来到前端食堂技术周刊&#xff0c;我们先来看下…

机器学习模型总结

多元线性回归&#xff08;linear regression&#xff09; 自变量&#xff1a;连续型数据&#xff0c;因变量&#xff1a;连续型数据 选自&#xff1a;周志华老师《机器学习》P53-55 思想&#xff1a;残差平方和达到最小时的关系式子即为所求&#xff0c;残差平方和&#xff1a…

【学习心得】爬虫JS逆向通解思路

我希望能总结一个涵盖大部分爬虫逆向问题的固定思路&#xff0c;在这个思路框架下可以很高效的进行逆向爬虫开发。目前我仍在总结中&#xff0c;下面的通解思路尚不完善&#xff0c;还望各位读者见谅。 一、第一步&#xff1a;明确反爬手段 反爬手段可以分为几个大类 &#…

【ARM 嵌入式 编译系列 10.5 -- .linkonce 段详细介绍】

请阅读【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】 文章目录 .linkonce 段详细介绍GOT 全局偏移表 .linkonce 段详细介绍 .gnu.linkonce.t是一个链接器区段&#xff0c;用于存放那些只需要链接一次的函数或者符号。区段名称后面通常跟着函数或者符号的名字。 关于linko…

20240304-2-计算机网络

计算机网络 知识体系 Questions 1.计算机网络分层的优点和缺点 优点 各层之间是独立的&#xff1b;灵活性好&#xff1b;结构上可分割开&#xff1b;易于实现和维护&#xff1b;能促进标准化工作。 缺点&#xff1a; 降低效率&#xff1b;有些功能会在不同的层次中重复出现&…

leetcode 300.最长递增子序列

动态规划的经典问题之一。 思路&#xff1a;这里的dp数组定义与之前做的那个打家劫舍得模板不一样&#xff0c;上一个计算的是偷多少家获得的最大钱财&#xff0c;是对于房子个数的定义。这里并不是&#xff0c;这里是对于一个数结尾作为dp数组的定义。 解释一下&#xff0c;…

微信小程序屏蔽控制台黄色提示信息

我们很多时候 一个小程序 啥都没有 终端就一直报一些黄色的警告 可以打开项目的 project.config.json 找一下setting 下面有没有 checkSiteMap 字段 如果没有加一个 如果有 直接将值改为 false 这样 再运行 就不会有这个黄色的提示信息了