JWT基础

概念

JSON Web Token
    本质上就是一串字符串,一串包含了很多信息的字符串令牌
    拥有三个部分
        头部
            -包含加密算法和令牌类型
                {
                    "alg":"算法名称",
                    "type":"JWT"
                }
        负载
            -包含数据和信息-七个官方默认-也可以自己定义内容
                {
                    iss:发行人
                    exp:到期时间
                    sub:主题
                    aud:用户
                    nbf:在此之前不可用
                    iat:发布时间
                    jti:JWT ID用于标识该JWT
                }
        签名
            -可以保护数据不被篡改

java-jwt

jwt在java中的应用
    token验证
        1.收到用户客户端输入的用户名和密码的登录请求
        2.验证通过
        3.返回给用户客户端一个生成的token
        4.用户客户端收到token后存储在客户端-localstorage/cookies
        5.用户客户端每次请求后端服务时都会携带token-在头部信息header中携带
        6.后端服务接受token,验证通过则返回给请求的数据,否则请求失败
    在java应用中
        -验证通过时:创建token
        -后端请求时:解析token

创建token

1.创建头部
    创建map集合,将头部信息放进去
        -Map map = new HashMap<>()
            map.put("als","加密方式")
            map.put("typ","JWT")
2.创建负载
    声明加密算法和使用的公钥信息--加盐
        Algorithm algorithm = Algoritem.HMAC265("szr")
    创建token,加入各种信息
        String token = JWT.created().
            //签发人
            withIssur("szr").
            //受众
            withAudience("自定义").
            //主题
            withSubject("szr").
            //签发时间-生成时间-当前时间
            withIssuedAt(new Date()).
            //过期时间-token时效性-不能一直有效-一小时
            withExpiresAt(System.currentTimeMillis() + 1000 * 60 * 60).
            //自定义内容
            withClaim("name","szr").
            //加盐
            sign(algorithm)

解析token

    //根据加盐内容和公钥获取内容
    JWTVerifier szr = JWT.require(algorithm).withIssuer("szr").build();
        DecodedJWT dec = szr.verify("获取到的token");
        String name = dec.getClaim("name").asString();
    //结果为
        name=szr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五目炒饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值