关于spring boot集成jjwt的示例

目录

一,导入jjwt的maven坐标

二,添加配置在application.yml中添加jwt配置:

三,写jjwt工具类


一,导入jjwt的maven坐标
 

        
        
            io.jsonwebtoken
            jjwt-impl
            0.11.1
        
        
            io.jsonwebtoken
            jjwt-api
            0.11.1
        
        
            io.jsonwebtoken
            jjwt-jackson
            0.11.1
        

二,添加配置
在application.yml中添加jwt配置:

# jwt token
jwt:
  secret: lerry-sign-token #密钥
  expiration: 36000 # jwt有效期,单位:s

三,写jjwt工具类

package fun.lerry.lemto.commons.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtException;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.crypto.SecretKey;
import java.time.Duration;
import java.time.Instant;
import java.time.temporal.TemporalAmount;
import java.util.Date;
import java.util.Map;


/**
 * jjwt相关工具
 * @author lerry
 */
@Component
@Slf4j
public class LemtoJwtTokenUtils {
    private final SecretKey secretKey;

    private final TemporalAmount expiration;

    /**
     *
     * description: LemtoJwtTokenUtils 构造器
     * @param secret jwt 密钥
     * @param minutes 有效期
     * @author lerry
     */
    public LemtoJwtTokenUtils(@Value("${jwt.secret}") String secret,
                        @Value("${jwt.expiration}") int minutes) {
        this.secretKey = Keys.secretKeyFor(SignatureAlgorithm.HS256);
        this.expiration = Duration.ofMinutes(minutes);
    }

    /**
     * 加密
     * description: 使用JWT生成器构造JWT,并使用指定的密钥和算法对其进行签名。
     * 
在这里,我们还指定了JWT的发布时间和过期时间。 * @param claims jwt的claims * @return java.lang.String * @author lerry */ public String generateToken(Map claims) { Instant now = Instant.now(); return Jwts.builder() .setClaims(claims) .setIssuedAt(Date.from(now)) .setExpiration(Date.from(now.plus(expiration))) .signWith(secretKey,SignatureAlgorithm.HS256) .compact(); } /** * 解密 * description: 用JWT解析器从JWT中提取声明,并使用指定的密钥验证JWT的签名。 * @param token json token * @return io.jsonwebtoken.Claims * @author lerry */ public Claims extractClaims(String token) throws JwtException { return Jwts.parserBuilder() .setSigningKey(secretKey) .build() .parseClaimsJws(token) .getBody(); } }

你可能感兴趣的:(spring,boot,spring,java,maven)