开发者

SpringBoot集成jjwt和使用方式

开发者 https://www.devze.com 2024-10-29 10:17 出处:网络 作者: 却诚Salong
目录SpringBoot集成jjwt和使用1.引入jwt依赖2.在spring的启动类application.yml中加入配置3.完整的jwt工具类代码总结SpringBoot集成jjwt和使用
目录
  • SpringBoot集成jjwt和使用
    • 1.引入jwt依赖
    • 2.在spring的启动类application.yml中加入配置
    • 3.完整的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.factorpythony.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<>android;();
            map.put("name", "张三");
            map.put("age", 14);
            String tokenjavascript = 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(javascriptnew Date(System.currentTimeMillis() + 60L * 1000 * destroyTime))
                    //签名算法及秘钥
                    .signWith(SignatureAlgorithm.HS256, signature)
                    .addClaims(map);
            return jwtBuilder.compact();
        python}
    
        public static Claims parseToken(String token) {
            //解析token
            return  (Claims) Jwts.parser()
                    .setSigningKey(signature)
                    .parse(token)
                    .getBody();
        }
    
    
    }

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号