1、引入pom
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.7.0</version>
</dependency>
2、编写token管理工具类
@Component
public class TokenManage {
// 设置过期时间
private long tokenEcpiration = 24*60*60*1000;
//编码秘钥
private String tokenSignKey = "123456";
//1 使用jwt根据用户名生成token
public String createToken(String username) {
String token = Jwts.builder().setSubject(username)
.setExpiration(new Date(System.currentTimeMillis()+tokenEcpiration))
.signWith(SignatureAlgorithm.HS512, tokenSignKey).compressWith(CompressionCodecs.GZIP).compact();
return token;
}
//2 根据token字符串得到用户信息
public String getUserInfoFromToken(String token) {
String userinfo = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token).getBody().getSubject();
return userinfo;
}
}
3、测试
@Autowired
private TokenManage tokenManage;
@Test
void contextLoads() {
// 根据用户名获取token
String yanghengxuan = tokenManage.createToken("yanghengxuan");
System.out.println(yanghengxuan);
// 根据token获取用户名
String userInfoFromToken = tokenManage.getUserInfoFromToken(yanghengxuan);
System.out.println(userInfoFromToken);
}
执行结果如下: