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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深度学习 pytorch cifar10数据集训练「建议收藏」

    深度学习 pytorch cifar10数据集训练「建议收藏」1.加载数据集,并对数据集进行增强,类型转换官网cifar10数据集附链接:https://www.cs.toronto.edu/~kriz/cifar.html读取数据过程中,可以改变batch_size和num_workers来加快训练速度transform=transforms.Compose([#图像增强transforms.Resize(120),transforms.RandomHorizontalFlip(),

    2022年6月22日
    24
  • 计算机定时关机命令,定时关机命令,小编教你怎么使用命令行定时关机

    计算机定时关机命令,定时关机命令,小编教你怎么使用命令行定时关机当我们在操作电脑的时候,有时会有需要定时关机,或者不在电脑前操作是需要过段时间自动关机,但是没有自带的定时关机软件,很多电脑用户又不喜欢安装第三方软件来完成该操作。那么怎么定时关机?下面,小编给大家带来了使用命令行定时关机的图文。有时候,下载一个东西,但是又要关闭电脑睡觉了,但是又想等东东下载好了,才去睡觉,想想如果能定时关机就好了。作为程序员的我,有时候就是作践自己啊,那怎么使用命令行定时关机?…

    2022年5月15日
    40
  • python xml转excel_一个python 脚本将XML文件转换到excel

    python xml转excel_一个python 脚本将XML文件转换到excel需要下载一个module:xlwt,如下是sourcecodeimportxml.dom.minidomimportxlwtimportsyscol=0row=0defhandle_xml_report(xml_report,excel):problems=xml_report.getElementsByTagName(“problem”)handle_problems(p…

    2022年8月22日
    7
  • 什么是linux Qt[通俗易懂]

    什么是linux Qt[通俗易懂]Qt是一个跨平台的C++图形用户界面库,由挪威TrollTech公司出品,目前包括Qt,基于Framebuffer的QtEmbedded,快速开发工具QtDesigner,国际化工具QtLinguist等部分Qt支持所有Unix系统,当然也包括Linux,还支持WinNT/Win2k,Win95/98平台。

    2022年5月17日
    31
  • java voliate_Java之voliate, synchronized, AtomicInteger使用

    java voliate_Java之voliate, synchronized, AtomicInteger使用1:voliate用在多线程,同步变量。线程为了提高效率,将成员变量(如A)某拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这种情况的。volatile告诉jvm,它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A),但是不能用其来进行多线程同步控制publicclassCounter…

    2022年4月30日
    41
  • matlab:lena图像在空域和频域的均匀滤波

    matlab:lena图像在空域和频域的均匀滤波文章目录前言一、空域滤波二、频域滤波三,matlab代码结果前言卷积:函数空间域的卷积的傅里叶变换是函数傅里叶变换的乘积。对应地,频率域的卷积与空间域的乘积存在对应关系。给定频率域滤波器,可对其进行傅里叶逆变换得到对应的空域滤波器;滤波在频域更为直观,但空域适合使用更小的滤波模板以提高滤波速度。因为相同尺寸下,频域滤波器效率高于空域滤波器,故空域滤波需要一个更小尺寸的模板近似得到需要的滤波结果。一、空域滤波将模板在图像中逐像素移动,将卷积核的每个元素分别和图像矩阵对应位置元素相乘并将结果累加,

    2022年6月19日
    37

发表回复

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

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