JWT 简单使用教程

全称 JSON Web Token(JSON Web令牌)

就是一个 String 字符串,由三部分组成

1. Header

2. Pyload

3. Signature

Header

有令牌的类型和所使用的签名算法,如HMAC、SHA256、RSA;使用Base64编码组成;(Base64是一种编码,不是一种加密过程,可以被翻译成原来的样子)

alg 代表 加密方式

type 代表 格式,一般都写成 JWT

{
	"alg" : "HS256",
	"type" : "JWT"
}

可以看到里面是一个key-value格式,在开发中我们也可以自己在header中设置键值对,比如:

JwtBuilder jwtBuilder = Jwts.builder();
jwtBuilder.setHeaderParam("typ","JWT");
jwtBuilder.setHeaderParam("test","test");

Pyload

有效负载,包含声明;声明是有关实体(通常是用户)和其他数据的声明,不放用户敏感的信息,如密码。同样使用Base64编码

{
	"sub" : "123",
	"name" : "John Do",
	"admin" : true
}

可以存放不敏感的用户信息用作登录信息读取,比如:

HashMap<String, Object> stringObjectHashMap = new HashMap<>();
stringObjectHashMap.put("userId",user.getUserId());
stringObjectHashMap.put("username",user.getUserName());
builder.setClaims(stringObjectHashMap);

Signature

前面两部分都使用Base64进行编码,前端可以解开知道里面的信息。Signature需要使用编码后的header和payload
加上我们提供的一个密钥,使用header中指定的签名算法(HS256)进行签名。签名的作用是保证JWT没有被篡改过

builder.signWith(SignatureAlgorithm.HS256,"自定义密钥");

生成token

String token = builder.compact();

pom依赖

<dependency>
      <groupId>io.jsonwebtoken</groupId>
      <artifactId>jjwt</artifactId>
      <version>0.9.1</version>
</dependency>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值