jwt是什么?也是一种加密的方式,生成token,解析token
1.maven地址:
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
2.代码demo
package pttl.order.utils;
import cn.hutool.core.collection.CollUtil;
import io.jsonwebtoken.*;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Component
public class JwtUtil {
// @Value("${jwt.secretKey}")
private static String secretKey = "ak47";
/**
*
* @param id
* @param subject 主题
* @param ttlMillis 过期时间-(毫秒)
* @param map 数据
* @return
* @throws Exception
*/
public static String createJWT(String id, String subject, long ttlMillis, Map<String, Object> map) throws Exception {
JwtBuilder builder = Jwts.builder()
.setId(id)
.setSubject(subject) // 发行者
.setIssuedAt(new Date()) // 发行时间
.signWith(SignatureAlgorithm.HS256, secretKey) // 签名类型 与 密钥
.compressWith(CompressionCodecs.DEFLATE);// 对载荷进行压缩
if (!CollUtil.isEmpty(map)) {
builder.setClaims(map);
}
if (ttlMillis > 0) {
builder.setExpiration(new Date(System.currentTimeMillis() + ttlMillis));
}
return builder.compact();
}
public static Claims parseJWT(String jwtString) {
return Jwts.parser().setSigningKey(secretKey)
.parseClaimsJws(jwtString)
.getBody();
}
public static void main(String[] args) throws Exception {
Map<String, Object> map = new HashMap<>();
map.put("name","孙悟空");
String login = createJWT(UUID.randomUUID().toString(), "login", 30000, map);
System.out.println(login);
Claims claims = parseJWT(login);
String name = claims.get("name", String.class);
System.out.println(name);
}
}