第一步
在POM文件中加入JWT的相关依赖
<!-- JWT相关 -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.7.0</version>
</dependency>
第二步
在工具包下增加一个JwtUtils的工具类
public class JwtUtils {
public static final String SUBJECT="xdclass";
public static final long EXPIRE=1000*60*60*24*7; //过期时间,毫秒,一周
public static final String APPSECRET="xd666";
/**
* 生成Jwt,token
* @param user
* @return
*/
public static String geneJsonWebToken(User user){
if(user==null || user.getId()==null || user.getName()==null || user.getHeadImg()==null){
return null;
}
String token = Jwts.builder().setSubject(SUBJECT)
.claim("id",user.getId())
.claim("name",user.getName())
.claim("img",user.getHeadImg())
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis()+EXPIRE)) //过期时间
.signWith(SignatureAlgorithm.HS256,APPSECRET).compact(); //签名算法
return token;
}
/**
* 校验token
* @param token
* @return
*/
public static Claims checkJwt(String token){
try {
Claims claims = Jwts.parser().setSigningKey(APPSECRET)
.parseClaimsJws(token).getBody(); //getBody会获取用户的一些信息
return claims;
}catch (Exception e){
}
return null;
}
}
第三步
开始测试
新建一个Test的类
一、Jwt进行加密
@Test
public void testGeneJwt(){
User user = new User();
user.setId(666);
user.setName("李四");
user.setHeadImg("www.baidu.com");
String token = JwtUtils.geneJsonWebToken(user);
System.out.println(token);
}
控制台输入了一条很长很长的字符串
二、解密,获取用户信息
把得到的很长的那个字符串放进token中
@Test
public void checkToken(){
String token = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ4ZGNsYXNzIiwiaWQiOjY2NiwibmFtZSI6IuadjuWbmyIsImltZyI6Ind3dy5iYWlkdS5jb20iLCJpYXQiOjE1NjQ5MTU5MzksImV4cCI6MTU2NTUyMDczOX0.xP6JAQDTqOyo2UrN4Kd6qv9E92FmlpkWuGX_sLAiI38";
Claims claims = JwtUtils.checkJwt(token);
if(claims!=null){
Integer id = (Integer) claims.get("id");
String name = (String)claims.get("name");
String img = (String)claims.get("img");
System.out.println(id);
System.out.println(name);
System.out.println(img);
}else{
System.out.println("非法token");
}
}
控制台打印出了