• SpringBoot集成jjwt和使用


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

    1. <dependency>
    2. <groupId>io.jsonwebtokengroupId>
    3. <artifactId>jjwtartifactId>
    4. <version>0.9.1version>
    5. dependency>

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

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

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

    1. package com.salong.myself.utils.jwt;
    2. import com.alibaba.fastjson.JSONObject;
    3. import io.jsonwebtoken.Claims;
    4. import io.jsonwebtoken.JwtBuilder;
    5. import io.jsonwebtoken.Jwts;
    6. import io.jsonwebtoken.SignatureAlgorithm;
    7. import org.springframework.beans.factory.annotation.Value;
    8. import org.springframework.stereotype.Component;
    9. import java.util.Date;
    10. import java.util.HashMap;
    11. import java.util.UUID;
    12. /**
    13. * @author Salong
    14. * @date 2023/11/16 17:27
    15. * @Email:salong0503@aliyun.com 基于jjwt包的jwt工具包
    16. */
    17. @Component
    18. public class JjwtUtil {
    19. @Value("${jwt.signature}")
    20. public void setSignature(String signature) {
    21. JjwtUtil.signature = signature;
    22. }
    23. @Value("${jwt.destroy_time}")
    24. public void setDestroyTime(int destroyTime) {
    25. JjwtUtil.destroyTime = destroyTime;
    26. }
    27. /**
    28. * signature签名
    29. */
    30. private static String signature;
    31. /**
    32. * jwt失效时间(分钟)
    33. */
    34. private static int destroyTime;
    35. public static void main(String[] args) {
    36. JjwtUtil.signature= "IU$S&39S%57!kYs@Nc";
    37. JjwtUtil.destroyTime = 30;
    38. HashMap map = new HashMap<>();
    39. map.put("name", "张三");
    40. map.put("age", 14);
    41. String token = getToken(map);
    42. System.out.println("token:" + token);
    43. //注意:上述获取的token是可以去类似https://www.box3.cn/tools/jwt.html等jwt等内容解析平台去解析内容的,
    44. // 所以不能放敏感信息,如果要放敏感信息,则颁发的token需要额外的加密和解密才可在网络上流通
    45. Claims claims = parseToken(token);
    46. System.out.println(JSONObject.toJSONString(claims));
    47. }
    48. public static String getToken(HashMap map) {
    49. JwtBuilder jwtBuilder = Jwts.builder()
    50. //唯一id
    51. .setId(UUID.randomUUID().toString())
    52. //todo 接受的用户(一般存用户id,提供的map入参需要给这个参数)
    53. .setSubject("Salong")
    54. //签发时间
    55. .setIssuedAt(new Date())
    56. //设置失效时间(1分钟失效)
    57. .setExpiration(new Date(System.currentTimeMillis() + 60L * 1000 * destroyTime))
    58. //签名算法及秘钥
    59. .signWith(SignatureAlgorithm.HS256, signature)
    60. .addClaims(map);
    61. return jwtBuilder.compact();
    62. }
    63. public static Claims parseToken(String token) {
    64. //解析token
    65. return (Claims) Jwts.parser()
    66. .setSigningKey(signature)
    67. .parse(token)
    68. .getBody();
    69. }
    70. }

  • 相关阅读:
    文件重命名技巧,给每个文件名称统一输入文字
    【华为机考题】最少任务处理时常
    2021 Java面试题大全(整理版)1000+面试题附答案详解,最全面详细,看完稳了!
    rmq消费者-推模式
    服务器硬件有哪些组成
    数字货币swap交易所逻辑系统开发分析方案
    机器学习:李航-统计学习方法笔记(一)监督学习概论
    Lodash初识
    知物由学 | 告别挑花眼,AI算法如何筛选低质量图片?
    计算机图形学(有效边表算法)用知识,改变命运的秘密【Morty深度干货】视频学习
  • 原文地址:https://blog.csdn.net/qq_35429398/article/details/134539474