结合hutool的JWT工具类,开箱即用。

hutool简介

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;

Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。

hutool官网

引入依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.16</version>
</dependency>

JWT

JWT(JSON WEBTOKEN):JSON网络令牌,JWT是一个轻便的安全跨平台传输格式,定义了一个紧凑的自包含的方式在不同实体之间安全传输信息(JSON格式)。它是在Web环境下两个实体之间传输数据的一项标准。实际上传输的就是一个字符串。广义上讲JWT是一个标准的名称;狭义上JWT指的就是用来传递的那个token字符串

JWT官网

JWT原理

在这里插入图片描述

JWT组成

JWT由三部分组成:

  • Header(头部)
  • Payload(负载)
  • Signature(签名)

因此,JWT通常如下所示:

xxxxxxxxxxxxxxx.yyyyyyyyyyyyyyyyyyyyyyyyy.mmmmmmmmmmmmmmmmmm

JWT工具类

public class JwtUtil {

    // 密钥
    private final static String SIGN = "123456";
    // token有效时长 (小时)
    private final static int EXPIRE_TIME = 2;

    /**
     * 生成token
     * @param map 传入payload(信息体)
     * @return
     */
    public static String getToken(Map<String, Object> map) {
        String token = JWT.create()
                // 信息体
                .addPayloads(map)
                // 密钥
                .setKey(SIGN.getBytes())
                // 过期时间(2小时)
                .setExpiresAt(DateUtil.offsetHour(DateUtil.date(), EXPIRE_TIME))
                .sign();
        return token;
    }

    /**
     * 验证token
     * @param token 传入token
     * @return
     */
    public static Boolean validationToken(String token) {
        // 验证token是否有效
        if (JWTUtil.verify(token, SIGN.getBytes())) {
            // 验证token是否过期
            try {
                JWTValidator.of(token).validateDate();
            } catch (ValidateException e) {
                return false;
            }
        }
        return true;
    }

    /**
     * 解析token
     * @param token 传入token
     * @return
     */
    public static JSONObject parseToken(String token) {
        // 验证token
        if (validationToken(token)) {
            return JWTUtil.parseToken(token).getPayloads();
        }
        // token无效 换成自己项目异常处理
        return null;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

杨洋阳和羊羊羊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值