生成JSON Web令牌的工具类(token)

news/2024/7/7 19:17:47

1.生成JSON Web令牌的工具类

package com.atguigu.common.utils;

import io.jsonwebtoken.*;
import org.springframework.util.StringUtils;

import java.util.Date;

/**
 * 生成JSON Web令牌的工具类
 */
public class JwtHelper {

    //token过期时间
    private static long tokenExpiration = 365 * 24 * 60 * 60 * 1000;
    //加密秘钥
    private static String tokenSignKey = "123456";

    //根据用户id和用户名称生成token字符串
    public static String createToken(String userId, String username) {
        String token = Jwts.builder()
                .setSubject("AUTH-USER")
                .setExpiration(new Date(System.currentTimeMillis() + tokenExpiration))
                .claim("userId", userId)
                .claim("username", username)
                .signWith(SignatureAlgorithm.HS512, tokenSignKey)
                .compressWith(CompressionCodecs.GZIP)
                .compact();
        return token;
    }

    //从token字符串获取userid
    public static String getUserId(String token) {
        try {
            if (StringUtils.isEmpty(token)) return null;

            Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
            Claims claims = claimsJws.getBody();
            String userId = (String) claims.get("userId");
            return userId;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    //从token字符串获取username
    public static String getUsername(String token) {
        try {
            if (StringUtils.isEmpty(token)) return "";

            Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
            Claims claims = claimsJws.getBody();
            return (String) claims.get("username");
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public static void main(String[] args) {
        String token = JwtHelper.createToken("1", "test");
        System.out.println(token);

        String userId = JwtHelper.getUserId(token);
        System.out.println(userId);

        String username = JwtHelper.getUsername(token);
        System.out.println(username);
    }
}


http://lihuaxi.xjx100.cn/news/2122744.html

相关文章

富格林:可信操作阻挠做单亏损

富格林认为&#xff0c;近年来现货黄金作为具有避险属性的投资产品备受投资者的青睐&#xff0c;新手投资者也纷纷加入其中。但是由于新手投资者缺乏控制仓位的可信经验而无法阻挠做单出现亏损的情况。因此&#xff0c;建议新手投资者应了解如何进行控仓来阻挠出金亏损的状况。…

继承-练习

T3、编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。要求&#xff1a; 定义乐器类Instrument&#xff0c;包括方法makeSound()定义乐器类的子类&#xff1a;二胡Erhu、钢琴Piano和小提琴Violin定义乐手类Musician&…

python函数-变量和参数-2.4

目录 在高阶函数中使用匿名函数 map() 函数&#xff1a; sorted() 函数&#xff1a; filter() 函数&#xff1a; 函数练习-9 在高阶函数中使用匿名函数 map() 函数&#xff1a; 描述&#xff1a; map() 会根据提供的函数对指定序列做映射。 第一个参数 function 以参数序…

P1383 高级打字机(可持续化线段树)

题目描述 早苗入手了最新的高级打字机。最新款自然有着与以往不同的功能&#xff0c;那就是它具备撤销功能&#xff0c;厉害吧。 请为这种高级打字机设计一个程序&#xff0c;支持如下 33 种操作&#xff1a; T x&#xff1a;Type 操作&#xff0c;表示在文章末尾打下一个小…

[GWCTF 2019]xxor

知识要点&#xff1a; Z3和tea __int64 __fastcall main(int a1, char **a2, char **a3) {int i; // [rsp8h] [rbp-68h]int j; // [rspCh] [rbp-64h]__int64 v6[6]; // [rsp10h] [rbp-60h] BYREF__int64 v7[6]; // [rsp40h] [rbp-30h] BYREFv7[5] __readfsqword(0x28u);puts…

想要成为一名合格的软件测试工程师,你得会些啥?

对于很多新入行或者打算入行&#xff0c;成为软件测试工程师的小伙伴来说&#xff0c;刚开始接触这行&#xff0c;不知道自己究竟该学些什么&#xff0c;或者不知道必须掌握哪些知识&#xff0c;才能成为一名合格的测试工程师。 根据笔者观点&#xff0c;如果你能在学习过程中&…

chatglm-6b模型在windows的详细安装教程(踩坑记录)

1.先是看了github的文章&#xff08;如果打不开这篇文章&#xff0c;可能需要科学上网&#xff0c;即访问外网的VPN&#xff09;&#xff1a; https://github.com/THUDM/ChatGLM-6B 强烈建议科学上网&#xff0c;不然后序下载相关文件也是困难重重&#xff0c;浪费时间&#x…

鸿蒙 ohpm 的异常报错

解压安装 ohpm , 进入 command-line-tools/ohpm/bin 目录执行 ohpm -v , 一直提示未初始化异常&#xff1a;ERROR: ohpm has not been initialized yet. Execute the init script to initialize it first. google搜索发现都是让配置环境变量、执行init脚本&#xff0c;尝试后…