融资项目——JWT令牌

1.JSON Web Token (JWT)是一种自包含令牌。自包含令牌本身已经包含了用户的相关信息,然后将这些信息通过例如加密的形式形成的令牌,由服务器进行解密从而完成对用户信息的确认。JWT一共由头、载荷与认证签名三个部分组成。然后由这三段字符拼接形成,每个部分通过"."分隔。如下图所示:

2.JWT的配置

需要引入相应的依赖:

            <!--jwt工具-->
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt</artifactId>
                <version>${jwt.version}</version>
            </dependency>

3.创建一个jwt令牌

public void CreateJwtToken(){
        JwtBuilder jwtBuilder= Jwts.builder();
        //密钥
        String signKey="pjl-rongzibao";

        //设置头、载荷与签名
        String jwtToken=jwtBuilder
                            //设置头
                            .setHeaderParam("alg","HS256")
                            .setHeaderParam("typ","JWT")

                            //设置载荷:自定义的信息
                            .claim("nickname","MyName")
                            .claim("pwd","123456")
                            .claim("role","admin")

                            //设置载荷:默认信息
                            .setSubject("rzb-user")//令牌主题
                            .setIssuer("pjl") //签发者
                            .setAudience("the_server")//接收方
                            .setIssuedAt(new Date())//令牌签发时间
                            .setExpiration(new Date(System.currentTimeMillis()+100*60*60*2))//过期时间
                            .setNotBefore(new Date(System.currentTimeMillis()+1000))//生效时间
                            .setId(UUID.randomUUID().toString())//唯一身份标识

                            //设置签名哈希
                            .signWith(SignatureAlgorithm.HS256,signKey)

                            //组装jwt字符
                            .compact();

        System.out.println(jwtToken);
    }

由上可知,载荷是jwt令牌的主体部分,拥有如下图的属性:

运行代码后,可得到下图的jwt令牌:

4.通过jwt令牌获取用户信息

第3部分中,我们最终生成了一串jwt令牌,下面服务器需要通过令牌解析出用户的信息:

public void getUserInfo(){
        String jwtToken="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuaWNrbmFtZSI6Ik15TmFtZSIsInB3ZCI6IjEyMzQ1NiIsInJvbGUiOiJhZG1pbiIsInN1YiI6InJ6Yi11c2VyIiwiaXNzIjoicGpsIiwiYXVkIjoidGhlX3NlcnZlciIsImlhdCI6MTcwOTI4MzYwOCwiZXhwIjoxNzA5Mjg0MzI4LCJuYmYiOjE3MDkyODM2MDksImp0aSI6IjRlOTAwNWQ0LWI1YWUtNDdkNy05N2ZhLWYyZmMyYWU3ZGJhNCJ9.8vsvEp-gGe7LmAq7DuXNon7641Zq3enkINW8YINEjsU";


        //密钥:需要和生成jwt时候的密钥相同
        String signKey="pjl-rongzibao";
        JwtParser jwtParser=Jwts.parser();

        Jws<Claims> claimsJws= jwtParser.setSigningKey(signKey).parseClaimsJws(jwtToken);

        Claims claims=claimsJws.getBody();
        System.out.println((String)claims.get("nickname"));
        System.out.println((String)claims.get("pwd"));
        System.out.println((String)claims.get("role"));



    }

运行后可以看到解析的内容与第3部分设定的内容完全一致:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python Web开发记录 Day5:jQuery(JavaScript库)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 五、jQuery1、jQuery-选择器和菜单案例①快速上…

CentOS7安装MySQL5.7

查看并卸载系统自带的 Mariadb rpm -qa|grep mariadb rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 检查系统是否安装过MySQL rpm -qa | grep mysql 检查有无MySQL用户组 cat /etc/group | grep mysql cat /etc/passwd | grep mysql 创建MySQL用户组和用户 groupadd m…

年轻人怎么搞钱?

年轻人想要搞钱&#xff0c;可以考虑以下几个方面&#xff1a; 1. 创业&#xff1a;年轻人可以通过自己的创意&#xff0c;找到一个市场的空缺&#xff0c;开创自己的业务。可以从比较小的项目开始&#xff0c;逐渐扩大范围&#xff0c;积累经验和财富。 2. 投资&#xff1a;…

泰山派学习笔记(二)一步一步编译SDK文件

上一节&#xff0c;我们安装了基于虚拟机的ubuntu系统&#xff0c;并且建立了samba服务打通了win10和ubuntu系统中的文件传输。本节课我们继续对立创官方提供的SDK文件进行编译&#xff0c;学习编译的方法。引用官方的话&#xff1a;如果只想下载别人编译好的固件并且做一些应用…

基于springboot+vue的智慧图书管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

Java缓存简介

内存访问速度和硬盘访问速度是计算机系统中两个非常重要的性能指标。 内存访问速度&#xff1a;内存是计算机中最快的存储介质&#xff0c;它的访问速度可以达到几纳秒级别。内存中的数据可以直接被CPU访问&#xff0c;因此读写速度非常快。 硬盘访问速度&…

APP攻防-实战拿下某seseAPPSpringboot未授权HeapDump提取OSS利用

知识点 1、APK-抓包 2、资产信息收集 3、SpringBoot-漏洞利用 4、自动化工具 5、HeapDump-分析提取 6、AccessKEY-利用后续 演示案例&#xff1a; 1、APK-抓包 2、资产信息收集 3、SpringBoot-漏洞利用 SpringBoot漏洞利用&#xff1a; https://github.com/LandGrey/Spring…

“内容+科技” 2023爱奇艺拿稳了“高质量增长”指南

“无论影视行业还是互联网行业&#xff0c;最难的时候应该是过去了&#xff0c;接下来我们要高质量增长。” 2023年5月10日&#xff0c;爱奇艺创始人、CEO龚宇在爱奇艺世界大会上给出了这样的判断。大半年之后&#xff0c;爱奇艺公布的2023年全年财报&#xff0c;最终诠释了高…

HMAC算法

HMAC HMAC可以用来加密、数字签名、报文验证等。 1. 消息认证码 消息认证码(Message Authentication Code,MAC)是基于消息和秘钥的公开函数,输出为定长数据: MAC=C(M,K) 假定通信双发共享秘钥K,发送方A向接收方B发送报文M并附上MAC,记为: A→B:M||MAC 当B收到后,使…

JavaScript继承 寄生组合式继承 extends

JavaScript继承 1、JS 的继承到底有多少种实现方式呢? 2、ES6 的 extends 关键字是用哪种继承方式实现的呢? 继承种类 原型链继承 function Parent1() {this.name parentlthis.play [1, 2, 3] }function Child1() {this.type child2 }Child1.prototype new Parent1(…

ChatGPT学习第四周

&#x1f4d6; 学习目标 ChatGPT实践操作 通过实际操作和练习&#xff0c;加深对ChatGPT功能的理解。 项目&#xff1a;创建一个ChatGPT应用案例 设计一个基于ChatGPT的小项目&#xff0c;将理论应用于实践。 ✍️ 学习活动 学习资料 《万字干货&#xff01;ChatGPT 从零完…

基于 ECharts的Python 数据可视化库,它允许用户使用 Python 语言生成各种类型的交互式图表和数据可视化

pyecharts 是一个基于 ECharts 的 Python 数据可视化库&#xff0c;它允许用户使用 Python 语言生成各种类型的交互式图表和数据可视化。 ECharts 是由百度开发的一款强大的开源数据可视化库&#xff0c;而 Pyecharts 则是 ECharts 的 Python 封装&#xff0c;使得在 Python 中…

C++前言

目录 什么是C C发展史 C的重要性 如何学习C 什么是C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的 程序&#xff0c;需要高度的抽象和建模时&#xff0c;C语言则不合适。为了解决软件危机&#xff0c; 20世纪80年…

CVPR2024 | 加速Diffusion,韩松团队提出分布式并行推理方案DistriFusion,加速6.1倍,质量不下降,已开源

https://arxiv.org/pdf/2402.19481.pdf https://github.com/mit-han-lab/distrifuser 本文概述 扩散模型在合成高质量图像方面取得了巨大成功。然而&#xff0c;由于巨大的计算成本&#xff0c;利用扩散模型生成高分辨率图像仍然具有挑战性&#xff0c;导致交互式应用程序的延…

bvh文件,人体骨骼重定向

关于两个bvh文件&#xff0c;人体骨骼重定向&#xff0c;小白记录 1、打开 Motionbuilder &#xff0c;选择 打开特定路径下的bvh文件。 绑定骨骼&#xff08;在绑定骨骼过程中&#xff0c;如果骨骼角度&#xff0c;大小之类的不方便&#xff0c;可以shift键加鼠标拖拽界面&…

谈谈高并发系统的设计方法论

何为高并发系统&#xff1f; 在理解高并发系统之前&#xff0c;我们先来理解几个相关概念。 什么是并发&#xff08;Conurrent&#xff09;&#xff1f; 在操作系统中&#xff0c;是指一个时间段中有几个程序都处于已启动运行到运行完毕之间&#xff0c;且这几个程序都是在同…

图片的处理库Thumbnailator

摘要&#xff1a;最近遇到图片处理的问题&#xff0c;借助了Thumbnailator库&#xff0c;记录下使用步骤如下…… 图片处理&#xff0c;JDK中也提供了对应的工具类&#xff0c;不过处理较麻烦&#xff0c;Thumbnailator 是Google一个 开源Java 图像处理库&#xff0c;用于简化 …

redis的基本数据类型(一)

redis的基本数据类型 1、redis1.1、数据库分类1.2、NoSQL分类1.3、redis简介1.4、redis应用1.5、如何学习redis 2、redis的安装2.1、Windows安装2.2.1、客户端redis管理工具 2.2、Linux安装&#x1f525;2.2.1、redis核心文件2.2.2、启动方式2.2.3、redis桌面客户端1、redis命令…

【C++从0到王者】第四十六站:图的深度优先与广度优先

文章目录 一、图的遍历二、广度优先遍历1.思想2.算法实现3.六度好友 三、深度优先遍历1.思想2.代码实现 四、其他问题 一、图的遍历 对于图而言&#xff0c;我们的遍历一般是遍历顶点&#xff0c;而不是边&#xff0c;因为边的遍历是比较简单的&#xff0c;就是邻接矩阵或者邻接…

Personality Enhanced Emotion Generation Modeling for Dialogue Systems

对话系统的人格增强情绪生成建模 摘要1 介绍2 相关工作2.1 个性、情感和情绪2.2 个性的理论模型2.3 在对话系统中整合个性情感建模 3 方法3.1 任务定义3.2 个性增强型情感生成模型3.3 情感状态推理单元3.3.1 情绪遗忘机制3.3.2 情感调节机制 3.4 训练 4 实验4.1 数据集 PELD 摘…