如何使用jwt生成token

jwt应该如何使用呢?

下面来写一个最简单的jwt的使用demo

1. 引入依赖包:

<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>3.10.3</version>
</dependency>

2. 加密解密方法

public static void main(String[] args) {
        // 过期时间
        final Calendar instance = Calendar.getInstance();
        instance.add(Calendar.SECOND, 1000);
        
        // 以abc为密钥进行hmac256方法加密,保存 a,b两个属性
        final String token = JWT.create().withHeader(new HashMap<>())
                .withClaim("a", "ccc")
                .withClaim("b", JSONObject.toJSON(Arrays.asList("a", "b", "c")).toString())
                .withExpiresAt(instance.getTime())
                .sign(Algorithm.HMAC256("abc"));
        System.out.println("token = " + token);

        // 解密
        JWTVerifier build = JWT.require(Algorithm.HMAC256("abc")).build();
        final DecodedJWT verify = build.verify(token);
        // 取出a
        final Claim a = verify.getClaim("a");
        System.out.println("a = " + a);
        System.out.println("a.asString() = " + a.asString());

        // 取出b
        final Claim b = verify.getClaim("b");
        System.out.println("b = " + b);
        System.out.println("b.asArray(List.class) = " + b.asString());

        // 取出过期时间
        final Date expiresAt = verify.getExpiresAt();
        System.out.println("expiresAt = " + expiresAt.toLocaleString());

    }

 

在生产环境中,一般jwt会保存用户的名字和角色权限等信息。可以将token 写到cookie里,每次前端访问后台时,可以在拦截器或者过滤器取到token, 然后解密,先判断是否过期,过期就抛异常阻止其访问。然后取出信息保存到threadLocal里,方便以后调用这些信息,当后台访问完成后,从thredLocal删除此用户信息。

 

上一篇:利用静态方法和静态变量的特点,在项目中如何使用


下一篇:实战-Android 系统异常日志上报(DropboxManager)