创建一个Maven项目,并导入jar包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.qbb</groupId>
<artifactId>jwt</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<!-- JWT -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.7.0</version>
</dependency> <!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency> <!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies> </project>

测试案例

使用jwt获取token

public class  JwtUtils {

    // 过期时间
public static final long EXPIRE = 30 * 1000;
// APP_SECRET
public static final String APP_SECRET = "QIUQIU&LL"; /**
* 获取token
* @param id
* @param nickName
* @param avatar
* @return
*/
public static String genJwt(String id, String nickName, String avatar) {
// 创建Jwt对象
JwtBuilder builder = Jwts.builder(); // 第一部分 JWT头部 header
builder.setHeaderParam("alg", "HS256"); // 签名算法,默认值
builder.setHeaderParam("typ", "JWT"); // 令牌类型,默认值 // 第二部分 有效载荷 playload
// 默认字段
builder.setId("1"); // jwt唯一身份标识
builder.setSubject("qbb-user"); // 令牌的主题
builder.setIssuedAt(new Date()); // 签发时间
builder.setExpiration(new Date(System.currentTimeMillis() + EXPIRE));// 设置过期时间 // 私有字段
builder.claim("id", id);
builder.claim("nickName", nickName);
builder.claim("avatar", avatar); // 第三部分 签名Hash
builder.signWith(SignatureAlgorithm.HS256, APP_SECRET); // 将三部分连接起来
String token = builder.compact(); return token;
}
} @Test
public void testGenJwt() {
Member member = new Member();
member.setId("100");
member.setNickName("qbb");
member.setAvatar("hello.jpg");
String token = JwtUtils.genJwt(member.getId(), member.getNickName(), member.getAvatar());
System.out.println(token);
}
result:   eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIxIiwic3ViIjoicWJiLXVzZXIiLCJpYXQiOjE2NDYyMzEwMjcsImV4cCI6MTY0NjIzMTA1NywiaWQiOiIxMDAiLCJuaWNrTmFtZSI6InFiYiIsImF2YXRhciI6ImhlbGxvLmpwZyJ9.x5Rxka-J-HPOL_fM1zIxAl9y45UzQJWu_xI-s5Bzfuc

解析jwtToken

/**
* 解析jwtToken
* @param jwtToekn
* @return
*/
public static Claims checkJwt(String jwtToekn) {
// 获取解析器
JwtParser parser = Jwts.parser();
Jws<Claims> claimsJws = parser.setSigningKey(APP_SECRET).parseClaimsJws(jwtToekn);
JwsHeader header = claimsJws.getHeader();
Claims body = claimsJws.getBody();
String signature = claimsJws.getSignature();
System.out.println("header:" + header);
System.out.println("body:" + body);
System.out.println("signature:" + signature); return body;
}
 @Test
public void testCheckJwt() {
Claims claims = JwtUtils.checkJwt("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIxIiwic3ViIjoicWJiLXVzZXIiLCJpYXQiOjE2NDYyMzEwMjcsImV4cCI6MTY0NjIzMTA1NywiaWQiOiIxMDAiLCJuaWNrTmFtZSI6InFiYiIsImF2YXRhciI6ImhlbGxvLmpwZyJ9.x5Rxka-J-HPOL_fM1zIxAl9y45UzQJWu_xI-s5Bzfuc");
String id = (String) claims.get("id");
String nickName = (String) claims.get("nickName");
String avatar = (String) claims.get("avatar");
System.out.println(id);
System.out.println(nickName);
System.out.println(avatar);
}

注意:测试的时候记得把测试时间设置长一点,不然会报错哦~ io.jsonwebtoken.ExpiredJwtException

JWT简单使用的更多相关文章

  1. Asp.net Core Jwt简单使用

    .net 默认新建Api项目不需要额外从Nuget添加Microsoft.AspNetCore.Authentication.JwtBearer appsettings.json { "Lo ...

  2. 3. laravel 5.5 多子域名 + dingo + jwt 简单环境搭建

    环境介绍 laravel 5.5.* + php 7.2 + mysql 5.7.27 1. 创建 laravel 项目 (自行 配置一下域名 如果 不会 请参考laravel 的第一篇文章) com ...

  3. asp.net mvc使用jwt简单例子

    Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准.该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景.JWT的声 ...

  4. jwt 简单基本使用加密解密

    import jwt # 加密 encode_jwt=jwt.encode({'uid':'123'},'密钥123',algorithm='HS256') print(encode_jwt) # 解 ...

  5. [认证授权] 2.OAuth2授权(续) & JWT(JSON Web Token)

    1 RFC6749还有哪些可以完善的? 1.1 撤销Token 在上篇[认证授权] 1.OAuth2授权中介绍到了OAuth2可以帮我们解决第三方Client访问受保护资源的问题,但是只提供了如何获得 ...

  6. oAuth2.0及jwt介绍

    oAuth2.0流程示意如下: 关于jwt介绍: 说明: 关于jwt简单说明一下,jwt即为json web token,是用来和服务端建立加密通信所使用的的一种“约定”,主要组成见上图即可.服务端一 ...

  7. 玩转 SpringBoot 2 之整合 JWT 上篇

    前言 该文主要带你了解什么是 JWT,以及JWT 定义和先关概念的介绍,并通过简单Demo 带你了解如何使用 SpringBoot 2 整合 JWT. 介绍前在这里我们来探讨一下如何学习一门新的技术, ...

  8. Spring Security + JWT学习

    开胃:Oauth2认证流程分析 现在第三方登录已经很普遍了,随便哪个App都会有使用微信登录,使用手机号码登录,或者使用支付宝登录等功能... 下面我们就以使用微信登录,做一个简单的流程分析分析 开胃 ...

  9. JWT实现过程及应用

    jwt实现过程 # 用户登录,返回给客户端token(服务端不保存),用户带着token,服务端拿到token再校验; 1,提交用户名和密码给服务端,如果登陆成功,jwt会创建一个token,并返回; ...

  10. Jwt的新手入门教程

    Jwt的新手入门教程 1.Jwt究竟是什么东东? ​ 先贴官网地址:JSON Web Tokens - jwt.io ​ ​ 再贴官方的定义: What is JSON Web Token? JSON ...

随机推荐

  1. 《Web安全基础》01. 基础知识

    @ 目录 1:概念名词 1.1:域名 1.2:DNS 1.3:网站开发语言 1.4:后门 1.5:Web 1.6:Web 相关安全漏洞 2:数据包 2.1:HTTP 2.2:HTTPS 2.3:请求数 ...

  2. datetime去除时分秒

    datetime.datetime.now().replace(microsecond=0)

  3. 原来你是这样的JAVA[06]-反射

    1.JVM为每个加载的class及interface创建了对应的Class实例来保存class及interface的所有信息: 获取一个class对应的Class实例后,就可以获取该class的所有信 ...

  4. 白盒AES和SM4实现的差分故障分析

    DFA攻击背景介绍 传统的密码安全性分析环境被称为黑盒攻击环境,攻击者只能访问密码系统的输入与输出,但随着密码系统部署环境的多样化,该分析模型已经不能够反映实际应用中攻击者的能力.2002年,Chow ...

  5. 最火前端 Web 组态软件 (可视化)

    ​  前言: 随着物联网.大数据等技术高速发展,我们逐步向数字化.可视化的人工智能(AI)时代的方向不断迈进.智能时代是工业 4.0 时代,我国工业领域正努力从"制造"迈向&quo ...

  6. MySQL系列3:缓冲池Buffer Pool的设计思想

    1. 回顾 上一篇我们主要讲了InnoDB的存储引擎,其中主要的一个组件就是缓存池Buffer Pool,缓存了磁盘的真实数据,然后基于缓存做增删改查操作,同时配合了后续的redo log.刷磁盘等机 ...

  7. Oracle-判断表上存在高水位线

    表上高水位线:通常一个新建的表,1个8K的数据块存放100行记录,若表上经常插入删除操作,造成表的水位线很高.下面从发现高水位线的办法,及解决高水位的方法说起: 1.发现存在高水位线的表:查看字典表u ...

  8. 【Flutter】如何优美地实现一个悬浮NavigationBar

    [Flutter]如何优美地实现一个悬浮NavigationBar 最近写代码的时候遇到了一个如下的需求: 整体来说,底部的条是一个浮动的悬浮窗,有如下的三个按钮: 点击左边的要进入"主页& ...

  9. Python比较字符串格式类型时间大小

    已知的格式是 06/24/2021 15:47:01.491 时间比较的思路是,把数据转换成时间戳比较: 第一步是把 06/24/2021 15:47:01.491 格式转换称 2021-06-24 ...

  10. python setup.py sdist bdist_wheel

    # python setup.py sdist bdist_wheel# twine upload dist/*import ioimport osimport sysfrom shutil impo ...