Jwt生成和解析工具类(万用版,可作为数据存储容器来传输)

Jwt生成和解析工具类(万用版,可作为数据存储容器来传输)packagecom.ciih.authcenter.client.util.jwt;importcom.alibaba.fastjson.JSON;importcom.auth0.jwt.JWT;importcom.auth0.jwt.JWTCreator;importcom.auth0.jwt.JWTVerifier;importcom.auth0.jwt.algorithms.Algorithm;importcom.auth0.jwt.interfaces.Claim;.

大家好,又见面了,我是你们的朋友全栈君。

package com.ciih.authcenter.client.util.jwt;

import com.alibaba.fastjson.JSON;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @author Lenovo
 */
@Slf4j
@Component
public class JwtTokenUtilPlusJ {
    /**
     * 盐
     */
    public static String SECRET = "authcenter";
    private static final long EXPIRATION = 28800000L;

    /*生成token*/
    public static <T> String generateToken(T t) {
        Date expireDate = new Date(System.currentTimeMillis() + EXPIRATION * 1000);
        Date now = new Date();
        Map<String, Object> map = new HashMap<>();
        map.put("alg", "HS256");
        map.put("typ", "JWT");
        JWTCreator.Builder token = JWT.create()
                .withHeader(map)
                .withExpiresAt(expireDate)
                .withIssuedAt(now)
                .withNotBefore(now);

        token.withClaim("data",JSON.toJSONString(t));
        return token.sign(Algorithm.HMAC256(SECRET));
    }

    /*解析token*/
    public static <T> T parseToken(String token, Class<T> aclass) {
        JWTVerifier verifier = JWT.require(Algorithm.HMAC256(SECRET)).build();
        DecodedJWT jwt = verifier.verify(token);
        Map<String, Claim> claims = jwt.getClaims();
        String string = claims.get("data").asString();
        T t = JSON.parseObject(string, aclass);
        log.info("解析Token的内容:" + t);
        return t;
    }

//    public static void main(String[] args) {
//        ArrayList<Map<String,Object>> list = new ArrayList<>();
//        HashMap<String, Object> hashMap = new HashMap<>();
//        HashMap<String, Object> hashMap1 = new HashMap<>();
//        hashMap.put("name", "怕科技的首付款");
//        hashMap.put("nam1e", "怕科技的首付款");
//        hashMap.put("na1me", "怕科技的首付款");
//        hashMap.put("na2me", "怕科技的首付款");
//        hashMap.put("na3me", "怕科技的首付款");
//        hashMap.put("na4me", "怕科技的首付款");
//        hashMap1.put("pas1sword", "水电煤气");
//        hashMap1.put("pas3sword", "水电煤气");
//        hashMap1.put("pass2word", "水电煤气");
//        hashMap1.put("pa4ssword", "水电煤气");
//        hashMap1.put("pa57ssword", "水电煤气");
//        hashMap1.put("passw8ord", "水电煤气");
//        list.add(hashMap);
//        list.add(hashMap1);
//        String s = generateToken(list);
//        System.out.println(s);
//        ArrayList arrayList = parseToken(s, ArrayList.class);
//        System.out.println(arrayList);
//    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148535.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月15日 下午11:46
下一篇 2022年6月15日 下午11:46


相关推荐

  • Ubuntu + PyCharm安装和配置Git

    Ubuntu + PyCharm安装和配置Git环境 Ubuntu PyCharm GitLab1 安装 Gitsudoapt getinstallgi Git 全局设置 gitconfigglo name Username gitconfigglo email 3 生成 Git 的 SSH nbsp Keyssh keygen trsa

    2026年3月17日
    2
  • 高德地图设置中国经纬度范围

    高德地图设置中国经纬度范围高德地图设置范围有个参数 regionregion 表示地图中的一块区域 它有两个字段一个是 center 就是这块区域中心点的经纬度 另一个是 spanspan 表示的是 regoin 的范围 它有两个字段一个是 latitudeDelt 表示纬度范围 南纬和北纬加一起应该有 180 度 所以它的范围应该是大于 0 度 小于等于 180 度 另一个是 longitudeDel 表示经度范围 东经

    2026年3月16日
    2
  • 机器学习降维之线性判别分析

    1.LDA描述线性判别分析(LinearDiscriminantAnalysis,LDA)是一种有监督学习算法,同时经常被用来对数据进行降维,它是RonaldDisher在1936年发明的,

    2021年12月30日
    40
  • 数据归一化和两种常用的归一化方法

    数据归一化和两种常用的归一化方法数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是两种常用的归一化方法:一、min-max标准化(Min-MaxNormalization)也称为离差标准…

    2022年6月23日
    25
  • 挖矿程序处理[通俗易懂]

    挖矿程序处理[通俗易懂]记一次工作中遇到得挖矿程序处理首先需要减少中毒得几率,就是不要把ssh密码设得太简单,然后ssl端口号改改,改加的访问次数限制加上,常用的sql,代码管理工具等等port也都改掉,管理员权限账户不要多建挖矿程序特点,cpu占用率贼高300,kill不尽,会出现一些自己不曾安装过的程序,库等挖矿程序一般是杀死不净的,需要找到程序路径,以及自启动的脚本ls/proc/进程号/exe-la删掉相关程序but你会发现,它在其他地方又新建了脚本…

    2022年6月29日
    31
  • 学校计算机网络管理员面试,网络管理员面试题及答案

    学校计算机网络管理员面试,网络管理员面试题及答案1 请写出下列服务使用的默认端口 POP3 SMTP FTPPOP3110SM 20 2 按照数据访问速度排序 硬盘 CPU 光驱 内存 CPU 内存硬盘光驱 3 请写出 568A 与 568B 的线序 568B 橙白橙绿白蓝蓝白绿棕白棕 568A 绿白绿橙白蓝蓝白橙棕白棕 4 网卡 MAC 是由 6 组什么组成的有 16 进制数据组成 前三组表示厂商 有 IEEE 来分配 并

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号