一.依赖
<!--token验证-->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>4.4.0</version>
</dependency>
二.生成token
@Test
public void testGen(){
Map<String,Object> claims =new HashMap<>();
claims.put("id",1);
claims.put("username","张三");
//生成jwt代码
String token =JWT.create()
.withClaim("user",claims)//添加载荷
//过期时间
.withExpiresAt(new Date(System.currentTimeMillis()+1000*60*60*12))
.sign(Algorithm.HMAC256("HHHAAA"));//指定算法配置密钥
System.out.println(token);
}
三.验证token
@Test
public void testParse(){
String token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" +
".eyJ1c2VyIjp7ImlkIjoxLCJ1c2VybmFtZSI6IuW8oOS4iSJ9LCJleHAiOjE3MDk3Nzk3NTF9" +
".7t7O8oOg3ih8BzO9I7ckg_kGQMEltCuCkXLRigmD8oY";
//根据密钥生成验证器,密钥和Algorithm都要和生成token的一样
JWTVerifier jwtVerifier=JWT.require(Algorithm.HMAC256("HHHAAA")).build();
//解析token,生成一个解析后的对象
DecodedJWT decodedJWT=jwtVerifier.verify(token);
//获得token里的数据
Map<String, Claim> claims=decodedJWT.getClaims();
System.out.println(claims.get("user"));
}
四.整理成为通用工具类
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import java.util.Date;
import java.util.Map;
public class JwtUtil {
public String getToken(Map<String,Object> claims){
//生成jwt代码
return JWT.create()
.withClaim("claims",claims)//添加载荷
.withExpiresAt(new Date(System.currentTimeMillis()+1000*60*60*12))//过期时间
.sign(Algorithm.HMAC256("HHHAAA"));//指定算法配置密钥
}
public Map<String, Object> ParseToken(String token){
return JWT.require(Algorithm.HMAC256("HHHAAA"))
.build()
.verify(token)
.getClaim("claims")
.asMap();
}
}
五.Controller层使用