首页>代码>Spring Boot整合Shiro+Jwt前后端分离简单实例>/spring-boot-shiro-unless-session/src/main/java/com/cxs/jwt/JwtUtil.java
package com.cxs.jwt; import com.alibaba.fastjson.JSON; import com.cxs.model.User; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Date; import java.util.HashMap; import java.util.Map; /* * @Project:spring-boot-shiro-demo * @Author:cxs * @Motto:放下杂念,只为迎接明天更好的自己 * */ @Component public class JwtUtil { @Value("${auth.jwt.signingKey}") private String signingKey; @Value("${auth.jwt.validityTime:30}") private Integer validityTime; /** * 获得token * * @param user * @return */ public String generateToken(User user) { Map<String, Object> hashMap = JSON.parseObject(JSON.toJSONString(user), HashMap.class); Date now = new Date(); Date expiration = new Date(System.currentTimeMillis() + validityTime * 60 * 1000); return Jwts.builder() .setId(user.getId() + "") .addClaims(hashMap) .setIssuedAt(now) .setExpiration(expiration) .signWith(SignatureAlgorithm.HS256, signingKey).compact(); } /** * 解析token * * @param token * @return SignatureException 无效 * ExpiredJwtException 过期 */ public Token parseToken(String token) { User user = new User(); Token result = new Token(); Claims claims = null; claims = Jwts.parser() .setSigningKey(signingKey) .parseClaimsJws(token) .getBody(); if (ObjectUtils.isEmpty(claims)) { return null; } result.setToken(token); result.setIssuedAtTime(LocalDateTime.ofInstant(claims.getIssuedAt().toInstant(), ZoneId.systemDefault())); result.setExpirationTime(LocalDateTime.ofInstant(claims.getExpiration().toInstant(), ZoneId.systemDefault())); user = JSON.parseObject(JSON.toJSONString(claims), User.class); result.setUser(user); return result; } /** * 判断是否过期 * * @param token * @return */ public boolean validTokenIssued(String token) { Claims claims = Jwts.parser() .setSigningKey(signingKey) .parseClaimsJws(token) .getBody(); Date expiration = claims.getExpiration(); return expiration.before(new Date()); } }

zolscy LV24
2024年11月27日
微信网友_7134912998903808 LV15
2024年9月11日
zhujunnan LV12
2024年3月4日
hanl LV12
2023年9月12日
zhaobing_g LV3
2023年8月29日
全栈小白 LV35
2023年4月25日
爱情戴罪的羔羊 LV7
2023年1月13日
欠踹de背影 LV25
2023年1月9日
最代码官方 LV168
2023年1月7日