导入依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
JWTUtils.java
public class JWTUtils {
//七天过期
private static final long expire = 1000 * 86400;
//32位密钥
private static final String secret = "sjidamskzixjcyfbeksoaldoskxisjab";
//生成token
public static String generateToken(String username){
Date now = new Date();
Date expireDate = new Date(now.getTime() + expire);
return Jwts.builder()
.setHeaderParam("type", "JWT")
.setSubject(username)
.setIssuedAt(now)
.setExpiration(expireDate)
.signWith(SignatureAlgorithm.HS512, secret)
.compact();
}
//解析token
public static Claims getClaimsByToken(String token){
return Jwts.parser()
.setSigningKey(secret)
.parseClaimsJws(token)
.getBody();
}
}
controller
@PostMapping("/login")
public Result login(@RequestBody User user){
String token = JWTUtils.generateToken(user.getUsername());
return new Result().success().add("token", token);
}
@GetMapping("/info") //传token
public Result info(String token){
Claims claimsByToken = JWTUtils.getClaimsByToken(token);
String username = claimsByToken.getSubject();
return new Result().success().add("username", username);
}