<properties>
<jwt.version>0.7.0</jwt.version>
</properties>
<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>${jwt.version}</version> </dependency>
/** * jwt工具类 * */ @ConfigurationProperties(prefix = "sqx.jwt") @Component public class JwtUtils { private Logger logger = LoggerFactory.getLogger(getClass()); //密钥 private String secret; //时间 private long expire; private String header; /** * 生成jwt token */ public String generateToken(long userId) { Date nowDate = new Date(); //过期时间 Date expireDate = new Date(nowDate.getTime() + expire * 1000); // jwt实例 return Jwts.builder() // 设置header .setHeaderParam("typ", "JWT") .setSubject(userId+"")//代表这个JWT的主体 个人标识 .setIssuedAt(nowDate)//iat: jwt的签发时间 .setExpiration(expireDate)//设置过期时间 .signWith(SignatureAlgorithm.HS512, secret)//设置签名使用的签名算法和签名使用的秘钥 .compact(); //开始压缩 } public Claims getClaimByToken(String token) { try { return Jwts.parser() .setSigningKey(secret) .parseClaimsJws(token) .getBody(); }catch (Exception e){ logger.debug("validate is token error ", e); return null; } } /** * token是否过期 * @return true:过期 */ public boolean isTokenExpired(Date expiration) { return expiration.before(new Date()); } public String getSecret() { return secret; } public void setSecret(String secret) { this.secret = secret; } public long getExpire() { return expire; } public void setExpire(long expire) { this.expire = expire; } public String getHeader() { return header; } public void setHeader(String header) { this.header = header; } } yml
sqx: # APP模块,是通过jwt认证的,如果要使用APP模块,则需要修改【加密秘钥】 jwt: # 加密秘钥 secret: f4e2e52034348f86b67cde581c0f9eb5 # token有效时长,7天,单位秒 expire: 604800 header: token