Java:java-jwt实现JsonWebToken

简介: Java:java-jwt实现JsonWebToken

文档:https://github.com/auth0/java-jwt

依赖

 <!-- JWT依赖 -->
 <dependency>
     <groupId>com.auth0</groupId>
     <artifactId>java-jwt</artifactId>
     <version>3.4.0</version>
 </dependency>

代码示例

package com.mouday;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import org.junit.jupiter.api.Test;
import java.util.Date;
import java.util.Map;
public class JwtDemo {
    //过期时间  120秒后
    private long expire = 120;
    // 秘钥
    private String secret = "123456";
    @Test
    public void createJwt() {
        Date now = new Date();
        Date expireDate = new Date(now.getTime() + expire * 1000);
        Algorithm algorithm = Algorithm.HMAC256(secret);
        String token = JWT.create()
                .withClaim("id", 12) // 增加Payload数据
                .withExpiresAt(expireDate)  // 过期时间
                .sign(algorithm);
        System.out.println(token);
    }
    @Test
    public void decodeJwt() {
        String token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTIsImV4cCI6MTYwNzg3MjM5NH0.J5ih6dffc7z3D2ckYDCe61JuhsQJLXjQuDIUGMip94s";
        DecodedJWT jwt = JWT.decode(token);
        System.out.println(jwt.getToken());
        System.out.println(jwt.getHeader());
        System.out.println(jwt.getPayload());
        System.out.println(jwt.getSignature());
        // 获取Payload中的数据
        Map<String, Claim> claims = jwt.getClaims();    //Key is the Claim name
        Integer id = claims.get("id").asInt();
        System.out.println(id);
    }
    @Test
    public void verifyJwt() {
        String token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTIsImV4cCI6MTYwNzg3MjM5NH0.J5ih6dffc7z3D2ckYDCe61JuhsQJLXjQuDIUGMip94s";
        Algorithm algorithm = Algorithm.HMAC256(secret);
        JWTVerifier verifier = JWT.require(algorithm).build(); //Reusable verifier instance
        try {
            verifier.verify(token);
            System.out.println("验证成功");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


相关文章
|
4月前
|
NoSQL 安全 Java
Java Spring Boot中使用Shiro、JWT和Redis实现用户登录鉴权
Java Spring Boot中使用Shiro、JWT和Redis实现用户登录鉴权
|
7月前
|
JSON 前端开发 Java
|
7月前
|
JSON 前端开发 Java
JWT解密:探秘令牌魔法与Java的完美交互
JWT解密:探秘令牌魔法与Java的完美交互
85 0
JWT解密:探秘令牌魔法与Java的完美交互
|
7月前
|
开发框架 安全 Java
【Java专题_01】springboot+Shiro+Jwt整合方案
【Java专题_01】springboot+Shiro+Jwt整合方案
114 0
|
JSON 算法 Java
Java的jwt令牌原理
Java的jwt令牌原理
101 0
|
小程序 前端开发 Java
java如何利用JWT和注解,自定义参数的方式优雅实现小程序用户Id管理
在我们的开发项目中,经常需要用到用户ID,比如在小程序商城系统中,我们将商品加入购物车,这时前端就需要发送请求,携带上用户的ID。基本上很多种请求操作都需要携带用户ID,如果每个请求都需要我们往data中添加id的话,那样需要写很多重复代码,并且代码也不美观;所以我们可以利用JWT跟注解的方式来实现;
201 0
java202304java学习笔记第五十五天员工管理-生成JWT令牌
java202304java学习笔记第五十五天员工管理-生成JWT令牌
59 0
java202304java学习笔记第五十五天员工管理-生成JWT令牌2
java202304java学习笔记第五十五天员工管理-生成JWT令牌2
59 0
java202304java学习笔记第五十五天员工管理-JWT令牌介绍
java202304java学习笔记第五十五天员工管理-JWT令牌介绍
59 0
|
Java 应用服务中间件 Linux
Java 在linux或者tomcat下使用java.jwt.*这个类,报java.awt.headless 报空异常
在开发的过程中使用到了java.jwt.*包下的东西,在开发工具中使用没问题,但是如果到了单独的tomcat或Linux里就会报:java.awt.headless null空异常,再去配置java mv?非常麻烦,看我是如何解决的。
134 0