SpringBoot集成jjwt和使用方式
更新时间:2024年10月28日 10:09:45 作者:却诚Salong
本文详细介绍了JWT依赖(以jjwt为例)的引入和使用方法,首先,需要在项目中引入jwt依赖,随后在Spring的启动类application.yml中进行相应配置,最后,提供了一份完整的jwt工具类代码,供读者直接使用,以上内容便是作者的个人经验分享,期望能为读者提供参考并得到支持
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) { //解析token return (Claims) Jwts.parser() .setSigningKey(signature) .parse(token) .getBody(); } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringCloud Gateway HttpWebHandlerAdapter链路调用请求流程介
Spring Cloud Gateway旨在为微服务架构提供一种简单有效的、统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,它不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全、监控/埋点和限流等2022-10-10SpringBoot项目中分页插件PageHelper无效的问题及解决方法
这篇文章主要介绍了解决SpringBoot项目中分页插件PageHelper无效的问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-06-06Java的MyBatis框架中MyBatis Generator代码生成器的用法
这篇文章主要介绍了Java的MyBatis框架中Mybatis Generator代码生成器的用法,Mybatis Generator主要被用来生成繁琐的配置文件来提高效率,需要的朋友可以参考下2016-04-0414个编写Spring MVC控制器的实用小技巧(吐血整理)
这篇文章主要介绍了14个编写Spring MVC控制器的实用小技巧(吐血整理),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-11-11
最新评论