前言
JWT官网介绍
导入依赖
<dependency>
<groupId>com.nimbusds</groupId>
<artifactId>nimbus-jose-jwt</artifactId>
<version>9.11.1</version>
</dependency>
代码部分
创建头部
创建载荷:作用是保存用户信息明细
创建签名构造器
这里的签名信息可以自己定,因为这里是测试案例,所以就随便写了
整理载荷和头部,并且给签名转码
加密
之后便会获得一个
JWT编码
拓展部分
解码JWT
获取JWT核载 的信息,这里我们是直接返回的username属性,其实我们可以直接返回map集合,有map集合就可以获取里面所有属性
源码模板(调用专用)
package cn.woniu.util;
import com.nimbusds.jose.*;
import com.nimbusds.jose.crypto.MACSigner;
import com.nimbusds.jose.crypto.MACVerifier;
import org.springframework.security.core.parameters.P;
import java.security.Key;
import java.util.HashMap;
import java.util.Map;
/**
* 生成jwt工具类
* 1:创建jwt
* 2:校验jwt是否合法
* 返回载荷部分
*/
public class JWTUtil {
private static final String KEY="qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq";
public static String createJWT(String username) throws Exception{
//创建头部
JWSHeader jwsHeader=new JWSHeader
.Builder(JWSAlgorithm.HS256)
.type(JOSEObjectType.JWT)
.build();
//创建载荷
HashMap map = new HashMap();
map.put("username",username);
Payload payload=new Payload(map);
//
JWSSigner jwsSigner=new MACSigner(KEY);
JWSObject jwsObject=new JWSObject(jwsHeader,payload);
jwsObject.sign(jwsSigner);
String serialize = jwsObject.serialize();
return serialize;
}
/**
* 解码JWT
* @param jwt
* @return
* @throws Exception
*/
public static boolean decode(String jwt) throws Exception{
JWSObject parse=JWSObject.parse(jwt);
JWSVerifier jwsSigner=new MACVerifier(KEY);
boolean verify = parse.verify(jwsSigner);
return verify;
}
/**
* 获取用户信息
* @param jwt
* @return
* @throws Exception
*/
public static Map getUserAcount(String jwt) throws Exception{
JWSObject parse=JWSObject.parse(jwt);
Map map =parse.getPayload().toJSONObject();
return map;
}
}