JJWT(Token制作)

113 阅读1分钟
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.12.6</version>
</dependency>
package com.android.cold.mvcConfig;


import com.alibaba.fastjson2.JSON;
import com.android.cold.entity.UserInfo;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import jakarta.annotation.Resource;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * Token生成工具
 * @author zhangYU
 */
@Component
public class JwtUtil {

    @Resource
    private  UserInfo userinfo;


    @Resource
    private StringRedisTemplate stringRedisTemplate;

    /**
     * @deprecated Token失效时间 7天
     */
    private static final long expirationDate = 1000 * 60 * 60 * 24 * 7;

    /**
     * @deprecated 签名
     */
    private static   String SECRET="rI7kK0pK0hD8dK9oQ6kR0bK3dF1mJ7dT2yM3wT7yF9fT5mX1aX4aH0gB6rL1vZ4gI1jG3qC8";


    /**
     * @deprecated 产生Token
     * @return
     */
    public String tokenCode(String phoneNumber){
        HashMap<String, Object> header = new HashMap<>();
        header.put("alg", SignatureAlgorithm.HS256.getValue());
        header.put("typ", "JWT");

        Map claims = new HashMap<>();
        claims.put("jti", UUID.randomUUID().toString());
        claims.put("sub", "Authorization Token");
        claims.put("exp", new Date(System.currentTimeMillis() + expirationDate));
        claims.put("phone",phoneNumber);
        String token = Jwts.builder()
                .setHeaderParams(header)
                .setClaims(claims)
                .signWith(SignatureAlgorithm.HS256, SECRET)
                .compact();

        return token;
    }




    /**
     * @param token
     * @return
     * @deprecated 解析Token
     */
    public Claims parseToken(String token){
        Claims claims= Jwts.parser().setSigningKey(SECRET).build().parseClaimsJws(token).getBody();
        HashMap<String,Object> map=new HashMap<>();
        map.put("name",claims.get("name"));
        stringRedisTemplate.opsForValue().set("token", JSON.toJSONString(map));
        return claims;
    }



}