SpringBoot集成jjwt和使用方式
作者:却诚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(); } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。