当前位置: 首页 > news >正文

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

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字符串获取useridpublic 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字符串获取usernamepublic 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);}
}

相关文章:

  • 深入了解Flutter中StreamController的属性、方法及多种场景使用示例
  • 邦芒职场:职场遇挫,年轻人“假上班”策略应对失业危机
  • Macbook安装Go以及镜像设置
  • DC-5靶机
  • [BT]BUUCTF刷题第4天(3.22)
  • Java基础--128陷阱
  • 5、Jenkins持续集成-Maven和Tomcat的安装与配置
  • 哨兵位、链表的链接
  • PTAxt的考研路
  • Python爬虫学习完整版
  • Rust 实战练习 - 4. 网络 TCP/UDP/Channel
  • 两台电脑简单的通信过程详解(经过两个路由器,不同网段)
  • Vue js封装接口
  • Mybatis-01
  • 51单片机学习笔记10 IIC通讯和EEPROM
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 0x05 Python数据分析,Anaconda八斩刀
  • Django 博客开发教程 8 - 博客文章详情页
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Java知识点总结(JavaIO-打印流)
  • jquery ajax学习笔记
  • Linux中的硬链接与软链接
  • mysql innodb 索引使用指南
  • oldjun 检测网站的经验
  • Python socket服务器端、客户端传送信息
  • rc-form之最单纯情况
  • ReactNativeweexDeviceOne对比
  • Vue2.x学习三:事件处理生命周期钩子
  • windows-nginx-https-本地配置
  • 代理模式
  • 简单基于spring的redis配置(单机和集群模式)
  • 解析带emoji和链接的聊天系统消息
  • 开源SQL-on-Hadoop系统一览
  • 前端之Sass/Scss实战笔记
  • 巧用 TypeScript (一)
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 写代码的正确姿势
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • ionic异常记录
  • 昨天1024程序员节,我故意写了个死循环~
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • #单片机(TB6600驱动42步进电机)
  • (a /b)*c的值
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (独孤九剑)--文件系统
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (四)模仿学习-完成后台管理页面查询
  • (一) storm的集群安装与配置
  • .net refrector
  • .NET上SQLite的连接
  • .pyc文件是什么?