jwt依赖
<properties>
<java.version>1.8</java.version>
<jjwt.version>0.11.2</jjwt.version>
</properties>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>${jjwt.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>${jjwt.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>${jjwt.version}</version>
</dependency>
工具类主要方法是使用私钥 生成token以及验证token
import io.jsonwebtoken.*;
import java.nio.charset.StandardCharsets;
import java.util.Date;
public class JwtHelper {
private static final String subject = "lyf888";
private static final String key = "xqwhlyf6666666myLifeIs200111044334";
private static final int expirationDate = 1000*60*60*24;
// 生成token
public static String createToken(Long userId,String userName){
JwtBuilder builder = Jwts.builder();
String token =
builder
//头
.setHeaderParam("alg", "HS256")
.setHeaderParam("typ", "jwt")
// 载荷
.setSubject(subject)
.setExpiration(new Date(System.currentTimeMillis() + expirationDate))
.claim("userId", userId)
.claim("userName", userName)
// 签名
.signWith(SignatureAlgorithm.HS256, key.getBytes(StandardCharsets.UTF_8))
.compact();
return token;
}
// 校验与解析
public static Claims parseToken(String token){
JwtParser parser = Jwts.parser();
// 设置签名密钥
parser.setSigningKey(key.getBytes(StandardCharsets.UTF_8));
Jws<Claims> claimsJws = null;
try {
claimsJws = parser.parseClaimsJws(token);
}catch (Exception e){
e.printStackTrace();
throw new MyException(ResultCodeEnum.SIGN_ERROR.getCode(),"登录异常",e);
}
Claims body = claimsJws.getBody();
return body;
}
public static Long getUserId(String token){
Claims claims = parseToken(token);
if (claims.get("userId") instanceof Integer){
return ((Integer) claims.get("userId")).longValue();
}else{
return (Long) claims.get("userId");
}
}
public static String getUserName(String token){
Claims claims = parseToken(token);
return (String) claims.get("userName");
}
}
测试
public class TestToken {
public static void main(String[] args) {
String token = JwtHelper.createToken(1L, "猪猪");
System.out.println(JwtHelper.getUserId(token));
System.out.println(JwtHelper.getUserName(token));
}
}