<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;
@Component
public class JwtUtil {
@Resource
private UserInfo userinfo;
@Resource
private StringRedisTemplate stringRedisTemplate;
private static final long expirationDate = 1000 * 60 * 60 * 24 * 7;
private static String SECRET="rI7kK0pK0hD8dK9oQ6kR0bK3dF1mJ7dT2yM3wT7yF9fT5mX1aX4aH0gB6rL1vZ4gI1jG3qC8";
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;
}
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;
}
}