Java实现JWT的Token认证机制

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

io.jsonwebtoken

jjwt

0.6.0

(2)创建类CreatejwtTest,用于生成token

public class CreateJwtTest {

public static void main(String[] args) {

JwtBuilder builder= Jwts.builder().setId(“888”)

.setSubject(“小白”)

.setIssuedAt(new Date())//用于设置签发时间

.signWith(SignatureAlgorithm.HS256,“wangmh”);//用于设置签名秘钥

System.out.println( builder.compact() );

}

}

(3)测试

eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODgiLCJzdWIiOiLlsI_nmb0iLCJpYXQiOjE1MjM0M

TM0NTh9.gq0J‐cOM_qCNqU_s‐d_IrRytaNenesPmqAIhQpYXHZk

#再次运行,每次运行结果都会不一样,因为我们载荷中包含了时间

3.token的解析

public class ParseJwtTest {

public static void main(String[] args) {

String compactJws=“eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODgiLCJzdWIiOiLlsI_nmb0iLCJpYXQiOjE1MjM0MTM0NTh9.gq0J‐cOM_qCNqU_s‐d_IrRytaNenesPmqAIhQpYXHZk”;

Claims claims =

Jwts.parser().setSigningKey(“wangmh”).parseClaimsJws(compactJws).getBody();

System.out.println(“id:”+claims.getId());

System.out.println(“subject:”+claims.getSubject());

System.out.println(“IssuedAt:”+claims.getIssuedAt());

}

}

//试着将token或签名秘钥篡改一下,会发现运行时就会报错,所以解析token也就是验证token

4.token过期校验

有很多时候,我们并不希望签发的token是永久生效的,所以我们可以为token添加一个

过期时间。

public class CreateJwtTest2 {

public static void main(String[] args) {

//为了方便测试,我们将过期时间设置为1分钟

long now = System.currentTimeMillis();//当前时间

long exp = now + 1000*60;//过期时间为1分钟

JwtBuilder builder= Jwts.builder().setId(“888”)

.setSubject(“小白”)

.setIssuedAt(new Date())

.signWith(SignatureAlgorithm.HS256,“wangmh”)

.setExpiration(new Date(exp));//用于设置过期时间

System.out.println( builder.compact() );

}

}

public class ParseJwtTest {

public static void main(String[] args) {

String compactJws&#

  • 15
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值