java_jwt工具类

561 阅读1分钟

jwt 有三部分组成:

  1. Header,{"type":"JWT","alg":"HS256"} 固定
  2. playload,存放用户id,过期时间,签发者等等
  3. 签名
  • 引入依赖
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>
  • 工具类
public class JwtUtils {
    private static final String SECRET = "&/2yf5!6@$$";  // 给token加密的秘钥
    
    public static String createToken(Long userId) {
        HashMap<String, Object> claims = new HashMap<>();
        claims.put("userId", userId);
        
        JwtBuilder jwtBuilder = Jwts.builder()
                .signWith(SignatureAlgorithm.HS256, SECRET)
                .setClaims(claims)    // 向payload放入信息
                .setIssuedAt(new Date())
                .setExpiration(new Date(new Date().getTime() + 24 * 60 * 60 * 1000));
        return jwtBuilder.compact();
    }

    public static Map<String,Object> parseToken(String token) {
        Jwt parse = Jwts.parser().setSigningKey(SECRET).parse(token);
        return (Map<String,Object>)parse.getBody();
    }
}
// 测试
public static void main(String[] args) {
    String token = JwtUtils.createToken(413977414L);  // 生成token
    Map<String, Object> map =  JwtUtils.parseToken(token); // 解析token
    System.out.println(map);
}