JWT+BCrypt快速体验

1. 什么是JWT

JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息,
微服务中实现JWT主要分有以下几步:

  1. 引入依赖
  2. 生成TOKEN
  3. 解析TOKEN

具体实现如下:

引入依赖

pom文件添加JWT

 <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.6.0</version>
        </dependency>

2. 创建CreateJwtTest用于生成token

CreateJwtTest代码如下

public class CreateJwt {
    public static void main(String[] args) {
       JwtBuilder jwtBuilder= Jwts.builder()
                .setId("666")
                .setSubject("小马")
                .setIssuedAt(new Date())
                .signWith(SignatureAlgorithm.HS256,"yixin")
                .setExpiration(new Date(new Date().getTime()+60000))
                .claim("role","admin");
        System.out.println(jwtBuilder.compact());
    }
}

setIssuedAt用于设置签发时间
signWith用于设置签名秘钥
测试运行输出如下结果:

eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2NjYiLCJzdWIiOiLlsI_pqawiLCJpYXQiOjE1NjEzNDIxOTgsImV4cCI6MTU2MTM0MjI1OCwicm9sZSI6ImFkbWluIn0.WGNetFU9Ncb8IERZwQVDExwsKZToxLVBLJ_Gohv3RtI

3. 创建ParseJwtTest用于解析token

ParseJwtTest代码如下

public class PraseJwt {
    public static void main(String[] args) {
        try {
            Claims claims=Jwts.parser().setSigningKey("yixin")
                    .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2NjYiLCJzdWIiOiLlsI_pqawiLCJpYXQiOjE1NjEzNDIxOTgsImV4cCI6MTU2MTM0MjI1OCwicm9sZSI6ImFkbWluIn0.WGNetFU9Ncb8IERZwQVDExwsKZToxLVBLJ_Gohv3RtI")
                    .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"));
        } catch (ExpiredJwtException e) {
            System.out.println("Token已过期,请重新获取");

        }

    }
}

将CreateJwtTest生成的token放入解析可得:
在这里插入图片描述
注意:我设置的生成token有效时间是6000ms,超过这个时间会返回
在这里插入图片描述
该文章涉及的源码请移步这里查看

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值