pom依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
</dependency>
jwt配置类
import io.jsonwebtoken.*;
import org.springframework.boot.autoconfigure.security.oauth2.resource.OAuth2ResourceServerProperties;
import org.springframework.util.StringUtils;
import java.util.Date;
public class JwtHelper {
//设定有效时间
private static long tokenExpiration = 365*24*60*1000;
//设定签名,用于编码加密
private static String tokenSignKey = "123456";
//根据用户id和用户名称生成token字符串
public static String createToken(Long userId, String username){
String token = Jwts.builder()
//分类
.setSubject("AUTH-USER")
//设置时长
.setExpiration(new Date(System.currentTimeMillis() + tokenExpiration))
//设置土体部分
.claim("userId", userId)
.claim("username", username)
//签名部分
.signWith(SignatureAlgorithm.HS512, tokenSignKey)
.compressWith(CompressionCodecs.GZIP)
.compact();
return token;
}
//从生成token字符串中获取用户id
public static Long getUserId(String token){
try {
if (StringUtils.isEmpty(token))
return null;
Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
Claims claims = claimsJws.getBody();
Integer userId = (Integer) claims.get("userId");
return userId.longValue();
}catch (Exception e){
e.printStackTrace();
return null;
}
}
//从生成token字符串中获取用户名
public static String getUsername(String token) {
try {
if (StringUtils.isEmpty(token))
return "";
Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
Claims claims = claimsJws.getBody();
return (String) claims.get("username");
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
String token = JwtHelper.createToken(1L, "admin");
System.out.println(token);
System.out.println(JwtHelper.getUserId(token));
System.out.println(JwtHelper.getUsername(token));
}
}