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

SpringBoot集成jjwt和使用

1.引入jwt依赖(这里以jjwt为例,具体其他jwt产品可以参见jwt官网)

<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version>
</dependency>

2.在spring的启动类application.yml中加入配置

jwt:
#  签名,随机设置signature: IU$S&39S%57!kYs@Nc
#  失效时间(分钟)destroy_time: 30

3.完整的jwt工具类代码,复制即可使用

package com.salong.myself.utils.jwt;import com.alibaba.fastjson.JSONObject;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import java.util.Date;
import java.util.HashMap;
import java.util.UUID;/*** @author Salong* @date 2023/11/16 17:27* @Email:salong0503@aliyun.com 基于jjwt包的jwt工具包*/
@Component
public class JjwtUtil {@Value("${jwt.signature}")public void setSignature(String signature) {JjwtUtil.signature = signature;}@Value("${jwt.destroy_time}")public void setDestroyTime(int destroyTime) {JjwtUtil.destroyTime = destroyTime;}/*** signature签名*/private static String signature;/*** jwt失效时间(分钟)*/private static int destroyTime;public static void main(String[] args) {JjwtUtil.signature= "IU$S&39S%57!kYs@Nc";JjwtUtil.destroyTime = 30;HashMap<String, Object> map = new HashMap<>();map.put("name", "张三");map.put("age", 14);String token = getToken(map);System.out.println("token:" + token);//注意:上述获取的token是可以去类似https://www.box3.cn/tools/jwt.html等jwt等内容解析平台去解析内容的,// 所以不能放敏感信息,如果要放敏感信息,则颁发的token需要额外的加密和解密才可在网络上流通Claims claims = parseToken(token);System.out.println(JSONObject.toJSONString(claims));}public static String getToken(HashMap<String, Object> map) {JwtBuilder jwtBuilder = Jwts.builder()//唯一id.setId(UUID.randomUUID().toString())//todo 接受的用户(一般存用户id,提供的map入参需要给这个参数).setSubject("Salong")//签发时间.setIssuedAt(new Date())//设置失效时间(1分钟失效).setExpiration(new Date(System.currentTimeMillis() + 60L * 1000 * destroyTime))//签名算法及秘钥.signWith(SignatureAlgorithm.HS256, signature).addClaims(map);return jwtBuilder.compact();}public static Claims parseToken(String token) {//解析tokenreturn  (Claims) Jwts.parser().setSigningKey(signature).parse(token).getBody();}}

http://www.lryc.cn/news/239609.html

相关文章:

  • RedisConnectionFactory is required已解决!!!!
  • redis的高可用之持久化
  • onnx模型转换opset版本和固定动态输入尺寸
  • 远程运维如何更高效的远程管理?向日葵的这几项功能会帮到你
  • python BDD 的相关概念
  • 【Exception】Error: Dynamic require of “path“ is not supported
  • 【蓝桥杯选拔赛真题25】C++两个数比大小 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析
  • C++学习——C++运算符重载(含义、格式、示例、遵循的规则)
  • 【unity实战】unity3D中的PRG库存系统和换装系统(附项目源码)
  • 编程语言发展史:C语言的诞生及其影响
  • (二)pytest自动化测试框架之添加测试用例步骤(@allure.step())
  • 【用unity实现100个游戏之16】Unity程序化生成随机2D地牢游戏2(附项目源码)
  • 潮玩宇宙大逃杀游戏开发源码说明
  • UE5 操作WebSocket
  • Linux文件
  • 素短语的定义
  • 【华为OD题库-033】经典屏保-java
  • clang+llvm多进程gdb调试
  • PHP反序列化简单使用
  • 专业课140+总分420+东南大学920专业综合考研,信息学院通信专业考研分享
  • 数据结构与算法编程题11
  • 【LeetCode刷题】--40.组合总和II
  • mysql面试内容点
  • msvcp140.dll是什么?msvcp140.dll丢失的有哪些解决方法
  • 数字图像处理(冈萨雷斯)学习笔记
  • MES系统管理范围及标准
  • vscode运行dlv报错超时
  • 【Leetcode合集】1. 两数之和
  • 使用Java解决快手滑块验证码
  • 瑞吉外卖Day06