JWT(JSON Web Token)
JWT就是一个字符串,经过加密处理与校验处理的字符串,形式为:A.B.C
格式
- A由JWT头部信息header加密得到
- B由JWT用到的身份验证信息json数据加密得到
- C由A和B加密得到,是校验部分
流程
Demo
依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
代码
public class MyJwt {
public static void main(String[] args) {
// 盐值
String secret = "JOJO";
Map<String, Object> map = new HashMap<String, Object>(2);
map.put("name", "zhangsan");
map.put("age", 18);
/*JwtBuilder jwtBuilder = Jwts.builder();*/
String token = Jwts.builder()
// 设置响应数据体
.setClaims(map)
// 设置加密方法和加密盐
.signWith(SignatureAlgorithm.HS256, secret)
.compact();
System.out.println(token);
// 通过token解析数据
/*JwtParser parser = Jwts.parser();*/
Map<String, Object> body = Jwts.parser()
// 盐值
.setSigningKey(secret)
// token
.parseClaimsJws(token)
.getBody();
System.out.println(body);
}
}
为什么要指定HashMap初始大小???
Map<String, Object> map = new HashMap<String, Object>(2);