JWT极简入门-案例演示

128 篇文章 0 订阅

环境:IDEA开发工具,JDK8
pom

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

Java测试代码

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.JwsHeader;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.JwtParser;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;

import java.util.Date;
import java.util.UUID;

private  long time = 1000*60*60*24;
    private  String signature="secret";
    @Test
    public void jwt(){
        JwtBuilder builder = Jwts.builder();
        String jwtToken = builder
                //header
                .setHeaderParam("typ","JWT")
                .setHeaderParam("alg","HS256")
                //payload
                .claim("username","tom")
                .claim("role","admin")
                .setSubject("admin-test")
                .setExpiration(new Date(System.currentTimeMillis()+time))
                .setId(UUID.randomUUID().toString())
                //signature
                .signWith(SignatureAlgorithm.HS256,signature)
                .compact();
        System.out.println(jwtToken);
    }

    @Test
    public void parse(){
        String token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InRvbSIsInJvbGUiOiJhZG1pbiIsInN1YiI6ImFkbWluLXRlc3QiLCJleHAiOjE2Mjg5NDkwNTksImp0aSI6ImZkZDUxYWM5LTUyNTAtNGY0NC04NTc4LWMwNTU0MmMzY2Q4YyJ9.8HwfUWvRRbUGwV-UTIQHsateZTlUfwhg859C2WP2Gvg";
        JwtParser parser = Jwts.parser();
        Jws<Claims> claimsJws = parser.setSigningKey(signature).parseClaimsJws(token);
        Claims claims = claimsJws.getBody();
        System.out.println("username:"+claims.get("username"));
        System.out.println("role:"+claims.get("role"));
        System.out.println("ID:"+claims.getId());
        System.out.println("Subject:"+claims.getSubject());
        System.out.println("Expiration:"+claims.getExpiration());
        String signature = claimsJws.getSignature();
        System.out.println("signature:"+signature);
        JwsHeader header = claimsJws.getHeader();
        System.out.println("typ:"+header.get("typ"));
        System.out.println("alg:"+header.get("alg"));
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值