New file |
| | |
| | | package com.cl.util; |
| | | |
| | | import io.jsonwebtoken.Claims; |
| | | import io.jsonwebtoken.JwtBuilder; |
| | | import io.jsonwebtoken.Jwts; |
| | | import io.jsonwebtoken.SignatureAlgorithm; |
| | | import lombok.Data; |
| | | import org.springframework.boot.context.properties.ConfigurationProperties; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.Date; |
| | | import java.util.Map; |
| | | @Component |
| | | public class JwtUtil { |
| | | |
| | | /** |
| | | * 用户生成jwt令牌相关配置 |
| | | */ |
| | | private static final String secretKey = "xx"; |
| | | private static final long ttl =7200000; |
| | | private static final String tokenName = "Authorization"; |
| | | |
| | | /** |
| | | * 生成jwt |
| | | * 使用Hs256算法, 私匙使用固定秘钥 |
| | | * @param claims 设置的信息 |
| | | * @return |
| | | */ |
| | | |
| | | public static String createJWT( Map<String, Object> claims) { |
| | | // 指定签名的时候使用的签名算法,也就是header那部分 |
| | | SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; |
| | | |
| | | // 生成JWT的时间 |
| | | long expMillis = System.currentTimeMillis() + ttl; |
| | | Date exp = new Date(expMillis); |
| | | |
| | | // 设置jwt的body |
| | | JwtBuilder builder = Jwts.builder() |
| | | // 如果有私有声明,一定要先设置这个自己创建的私有的声明,这个是给builder的claim赋值,一旦写在标准的声明赋值之后,就是覆盖了那些标准的声明的 |
| | | .setClaims(claims) |
| | | // 设置签名使用的签名算法和签名使用的秘钥 |
| | | .signWith(signatureAlgorithm, secretKey.getBytes(StandardCharsets.UTF_8)) |
| | | // 设置过期时间 |
| | | .setExpiration(exp); |
| | | |
| | | return builder.compact(); |
| | | } |
| | | |
| | | /** |
| | | * Token解密 |
| | | * @param token 加密后的token |
| | | * @return |
| | | */ |
| | | public static Claims parseJWT( String token) { |
| | | // 得到DefaultJwtParser |
| | | Claims claims = Jwts.parser() |
| | | // 设置签名的秘钥 |
| | | .setSigningKey(secretKey.getBytes(StandardCharsets.UTF_8)) |
| | | // 设置需要解析的jwt |
| | | .parseClaimsJws(token).getBody(); |
| | | return claims; |
| | | } |
| | | |
| | | public String getTokenName() { |
| | | return tokenName; |
| | | } |
| | | } |