JWT简单使用
创建一个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简单使用的更多相关文章
- Asp.net Core Jwt简单使用
.net 默认新建Api项目不需要额外从Nuget添加Microsoft.AspNetCore.Authentication.JwtBearer appsettings.json { "Lo ...
- 3. laravel 5.5 多子域名 + dingo + jwt 简单环境搭建
环境介绍 laravel 5.5.* + php 7.2 + mysql 5.7.27 1. 创建 laravel 项目 (自行 配置一下域名 如果 不会 请参考laravel 的第一篇文章) com ...
- asp.net mvc使用jwt简单例子
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准.该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景.JWT的声 ...
- jwt 简单基本使用加密解密
import jwt # 加密 encode_jwt=jwt.encode({'uid':'123'},'密钥123',algorithm='HS256') print(encode_jwt) # 解 ...
- [认证授权] 2.OAuth2授权(续) & JWT(JSON Web Token)
1 RFC6749还有哪些可以完善的? 1.1 撤销Token 在上篇[认证授权] 1.OAuth2授权中介绍到了OAuth2可以帮我们解决第三方Client访问受保护资源的问题,但是只提供了如何获得 ...
- oAuth2.0及jwt介绍
oAuth2.0流程示意如下: 关于jwt介绍: 说明: 关于jwt简单说明一下,jwt即为json web token,是用来和服务端建立加密通信所使用的的一种“约定”,主要组成见上图即可.服务端一 ...
- 玩转 SpringBoot 2 之整合 JWT 上篇
前言 该文主要带你了解什么是 JWT,以及JWT 定义和先关概念的介绍,并通过简单Demo 带你了解如何使用 SpringBoot 2 整合 JWT. 介绍前在这里我们来探讨一下如何学习一门新的技术, ...
- Spring Security + JWT学习
开胃:Oauth2认证流程分析 现在第三方登录已经很普遍了,随便哪个App都会有使用微信登录,使用手机号码登录,或者使用支付宝登录等功能... 下面我们就以使用微信登录,做一个简单的流程分析分析 开胃 ...
- JWT实现过程及应用
jwt实现过程 # 用户登录,返回给客户端token(服务端不保存),用户带着token,服务端拿到token再校验; 1,提交用户名和密码给服务端,如果登陆成功,jwt会创建一个token,并返回; ...
- Jwt的新手入门教程
Jwt的新手入门教程 1.Jwt究竟是什么东东? 先贴官网地址:JSON Web Tokens - jwt.io 再贴官方的定义: What is JSON Web Token? JSON ...
随机推荐
- 《SQL与数据库基础》09. 事务
@ 目录 事务 简介 操作 方式一 方式二 四大特性(ACID) 并发事务问题 事务隔离级别 本文以 MySQL 为例 事务 简介 事务是一组操作的集合,它是一个不可分割的工作单位.事务会把所有的操作 ...
- 开源 SD-Small 和 SD-Tiny 知识蒸馏代码与权重
最近,人工智能社区在开发更大.更高性能的语言模型方面取得了显著的进展,例如 Falcon 40B.LLaMa-2 70B.Falcon 40B.MPT 30B; 以及在图像领域的模型,如 SD2.1 ...
- (2023.7.15)软件加密与解密-番外1-PWN2REVERSE[XDbg]
/提示:如果你看到了这行文字,那说明您的预览器不支持内嵌 CSS 代码,请使用 VSCode 阅读本 Markdown 文件/ 每天一个技术点 (2023.7.15)软件加密与解密-番外1-PWN2R ...
- 怎么选择API接口来获取自己想要的数据
在今天的数字时代,数据变得越来越重要,API接口也成为了获取数据的一种重要方式.无论是开发自己的应用程序还是进行市场营销,数据的获取都是非常必要的.但是,如何选择API接口来获取自己想要的数据呢? 以 ...
- OpenLDAP服务器搭建
一.关闭防火墙和selinux [root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# systemctl d ...
- JSTL常用代码总结
1. jstl判空: (1) 须先引人<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix=" ...
- excel的烦恼
Smiling & Weeping ---- 他未对我好半分,偏巧这感情疯长似野草 题目链接:https://www.matiji.net 思路:与新三进制2思路相似,转化为纯26进制,然后往 ...
- Web3.0时代的全新合作模式:DAO
你有没有遇到这种情况:我有一个很棒的想法,想要开发出一个"改变世界"的项目,但是我既没有技术,也没有人脉,甚至没有资金,导致我始终没有办法开始行动,痛苦万分.就比如在黑客大赛上,我 ...
- Journey / Solution Set - 「NOIP-S 2020」「Prob. A-C」
这种东西怎么写啊... Day 1(好像也没有 Day 2 到了 NK 后发现正好可以进门,于是就什么也没有检查的进去了. 进门前问了一下 LYC 之前问过的一个问题,他说没有头绪,然后就没怎么说话了 ...
- 工作中常用的一些Git骚操作,一般人我不告诉他。
一.Git提交代码 1 git pull 从服务器上拉取代码 2 git status 查看文件的状态 3 git add . 添加所有文件到暂存区 4 git commit -m "提交的 ...