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

Java使用JJWT令牌

最近在B站大学学习Java开发,刚好学到登入验证,在使用JJWT令牌时踩了一些坑,在这里把代码和依赖给出,希望后来者得以借鉴。

  • 依赖
        <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.2</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><version>0.11.2</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId><version>0.11.2</version></dependency>
  • JJWT编解码的工具类
package com.example.demo2.utils;
import com.example.demo2.pojo.Emp;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.jackson.io.JacksonSerializer;
import io.jsonwebtoken.security.Keys;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import java.security.Key;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class JWTUtils {private static  String hashKey="springbootdemofdjwauiohuibaduiwhanuihwudw47894987awdwhi";public static String generate(Emp emp){//生成载体Map<String,Object> claims=new HashMap<>();claims.put("id",emp.getId());claims.put("username",emp.getUsername());claims.put("name",emp.getName());//生成令牌String token= Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS256,hashKey).setExpiration(new Date(System.currentTimeMillis()+24*3600*1000)).serializeToJsonWith(new JacksonSerializer<>()).compact();log.info("JWT令牌生成成功,{}",token);return token;}public static Boolean parse(String token){try{Claims claims=Jwts.parser().setSigningKey(hashKey).parseClaimsJws(token).getBody();log.info("令牌解析成功,{}",claims);return true;}catch (Exception e){log.info("令牌解析错误,说明用户未登录");return false;}}
}
http://www.lryc.cn/news/198871.html

相关文章:

  • “第四十四天”
  • Unity Mono和.Net平台浮点算法的区别
  • 【SA8295P 源码分析 (二)】64 - QNX 与 Android GVM 显示 Dump 图片方法汇总
  • shell命令以及运行原理和lLinux权限
  • 斯坦福JSKarel编程机器人使用介绍
  • SpringBoot中pom.xml不引入依赖, 怎么使用parent父项目的依赖
  • 基于vue3+ts5+vue-router4+pinia2的PC端项目搭建教程
  • 6个无版权、免费、高清图片素材库
  • 什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的 IE?
  • LeetCode 2906. 构造乘积矩阵【前后缀分解,数组】中等
  • vue3+koa+axios实现前后端通信
  • Required MultipartFile parameter ‘file‘ is not present
  • vue3后台管理系统之layout组件的搭建
  • Minio 文件上传(后端处理同文件判断,同一文件秒传)
  • 模拟IIC通讯协议(stm32)(硬件iic后面在补)
  • 使用注解读取properties配置文件
  • Python---练习:求世界杯小组赛的总成绩(涉及:布尔类型转换为整型)
  • vue3学习源码笔记(小白入门系列)------KeepAlive 原理
  • 边写代码边学习之mlflow
  • 基于吉萨金字塔建造优化的BP神经网络(分类应用) - 附代码
  • axios的post请求所有传参方式
  • 【c++】向webrtc学比较2: IsNewerSequenceNumber 用于NackTracker及测试
  • PRCV 2023:语言模型与视觉生态如何协同?合合信息瞄准“多模态”技术
  • 深度学习硬件配置推荐(kaggle学习)
  • 1019hw
  • 两分钟搞懂UiAutomator自动化测试框架
  • Fast DDS之Subscriber
  • 测试PySpark
  • C语言- 原子操作
  • 设置hadoop+安装java环境