首页>代码>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()); } }
最近下载更多
最近浏览更多
kenhomeliu LV29
4月30日
getset LV8
4月20日
wanglinddad LV54
4月2日
jc121140 LV3
3月22日
zhujunnan LV12
3月4日
简约时尚 LV13
1月16日
WBelong LV7
2023年12月25日
wuying8208 LV15
2023年11月25日
廖业贵 LV18
2023年11月16日
上历史课
2023年11月2日
暂无贡献等级