JWT方法模板编写

前言

        JWT官网介绍

 官网JSON Web Tokens - jwt.ioJSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is digitally signed using JSON Web Signature (JWS).https://jwt.io/#debugger-io

导入依赖

<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;
   }
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值