jwt 有三部分组成:
- Header,{"type":"JWT","alg":"HS256"} 固定
- playload,存放用户id,过期时间,签发者等等
- 签名
- 引入依赖
<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);
}