文章目录
生成令牌添加自定义属性
- 生成令牌添加自定义属性
- 解析令牌自定义属性
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
/**
* 类名称:CreateJwt
* 类描述:生成token的测试类
*
* @author: taohongchao
* 创建时间:2019/2/13 19:26
* Version 1.0
*/
public class CreateJwt {
public static void main(String[] args){
JwtBuilder jwtBuilder = Jwts.builder()
.setId("666") //登录用户的id
.setSubject("小马") //登录用户的名称
.setIssuedAt(new Date()) //用户登录的时间
.signWith(SignatureAlgorithm.HS256,"itcast")//头部信息 第一个参数为加密方式为哈希 256 第二个参数为加的盐为itcast
.setExpiration(new Date(new Date().getTime()+60000))
.claim("role","admin"); //设置token 的过期时间为一分钟
System.out.println(jwtBuilder.compact());
}
}
在.claim方法中,添加了role的信息 生成的令牌如下
eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2NjYiLCJzdWIiOiLlsI_pqawiLCJpYXQiOjE1NTAxNDUzMDMsImV4cCI6MTU1MDE0NTM2Mywicm9sZSI6ImFkbWluIn0.LLfw1XyTz7zuhupagyJGtEQRsPsvBZpgztx82F1dTp4
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import java.text.SimpleDateFormat;
/**
* 类名称:ParseJwtTest
* 类描述:TODO
*
* @author: taohongchao
* 创建时间:2019/2/13 19:48
* Version 1.0
*/
public class ParseJwtTest {
public static void main(String[] args){
Claims claims = Jwts.parser().setSigningKey("itcast") //指定
.parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2NjYiLCJzdWIiOiLlsI_pqawiLCJpYXQiOjE1NTAxNDUzMDMsImV4cCI6MTU1MDE0NTM2Mywicm9sZSI6ImFkbWluIn0.LLfw1XyTz7zuhupagyJGtEQRsPsvBZpgztx82F1dTp4")
.getBody();
System.out.println("用户的id: "+claims.getId());
System.out.println("用户名: "+claims.getSubject());
System.out.println("登录时间: "+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(claims.getIssuedAt()));
System.out.println("过期时间: "+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(claims.getExpiration()));
System.out.println("用户角色: "+claims.get("role"));
}
}
在这一行代码中,对自定义的属性进行了解析 输出的结果如下