大飞_dafei

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

jjwt 简单使用---Java

jjwt 简单使用---Java

复制代码
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>
View Code
复制代码

 

复制代码
package com.example.fei.service;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Component;

import java.util.Date;


/**
 * 参考资料:
 *    https://github.com/jwtk/jjwt
 *    https://stormpath.com/blog/jwt-java-create-verify
 */
@Component
public class TokenService {

    private final static String myApiKeySecret = "fei_Secret_123456"; // 这里写入你的Secret

    /**
     * 创建 token
     * @return {}
     */
    public String createToken() {
        long nowMillis  = System.currentTimeMillis();
        Date now = new Date(nowMillis);
        Date exp = new Date(nowMillis + 1000 * 30); // 过期时间 30秒
        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; // 签名算法

        JwtBuilder builder = Jwts.builder()
                .setId("fei123") // 置唯一编号
                // .setIssuedAt(now)  //设置签发日期
                // .setExpiration(exp) // 设置过期时间
                // .setAudience("iot")
                // .setIssuer("fei") // 设置发行人
                .setSubject( "fei_setSubject" )
                .claim("userName", "username_01")
                .claim("userPwd", "123456")
                .signWith(signatureAlgorithm, myApiKeySecret); // 设置签名 使用HS256算法,并设置SecretKey(字符串)

        return builder.compact();
    }

    /**
     * 校验 token 是否正确
     * @param jwt String 用createToken方法中的返回值
     * @return {}
     */
    public Boolean parseJWT(String jwt) {
        try {
            Claims claims = Jwts.parser()
                    .setSigningKey(myApiKeySecret)
                    .parseClaimsJws(jwt)
                    .getBody();

            Object userName = claims.get("userName");
            Object userPwd = claims.get("userPwd");
            String subject = claims.getSubject();

            System.out.println(userName.toString());
            System.out.println(userPwd.toString());
            System.out.println(subject);

            return true;
        } catch (Exception e) {
            System.out.println("Token格式有误");
            return false;
        }
    }
}
复制代码

 

 

 

footer底部

jjwt官方文档

jwt-demo

 

posted on   大飞_dafei  阅读(171)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示