JWT的简单使用

依赖
   <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.18.2</version>
        </dependency>
使用
package com.sky;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Calendar;
import java.util.HashMap;

@SpringBootTest
class DemoApplicationTests {

    @Test
    void contextLoads() {
        HashMap<String,Object> map = new HashMap<>(); //头部是 HashMap 类型
        //设置过期时间
        Calendar instance = Calendar.getInstance();
        instance.add(Calendar.SECOND,1000);//设置过期时间为 1000 秒  Calendar.SECOND 秒 Calendar.DATE 天...
        //组成JWT
        JWTCreator.Builder builder= JWT.create();
        builder.withHeader(map) //头 header 可以不加,默认会有一个MAP
                .withClaim("userId",1) //payload , 可多组 ,如果有多个,可以先存入MAP集合,最后foreach遍历读取
                .withClaim("userName","test") //payload
                .withExpiresAt(instance.getTime());  //设置令牌过期时间
        String token =builder.sign(Algorithm.HMAC256("W@##$$%@!")); //签名
        System.out.println(token); //得到生成的Token
    }
    @Test
    public void test(){
        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("W@##$$%@!")).build(); //根据签名获取JWT验证对象
        //验证上面生成的Token, 这里如果只验证是否合法,可以执行完后不再获取下面的信息如果不合法,就会有异常
        DecodedJWT verify = jwtVerifier.verify("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6InRlc3QiLCJleHAiOjE2NDQ3MTc5NDYsInVzZXJJZCI6MX0.r8JiKm10KU7IMfe17JU5-2N_cEwdUQhwl2l84zP7oO4");
        //获取验证出的一些信息
        System.out.println(verify.getExpiresAt()); //获得过期时间
        System.out.println(verify.getClaim("userId").asInt());//获取payload 注意类型与上面一一对应
        System.out.println(verify.getClaim("userName").asString());//获取payload
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值