package com.landtool.lanbase.modules.api.utils; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; /** * @author lanbase * @Description: TODO(jwt工具类) * @date 2017-9-27 14:33 */ @ConfigurationProperties(prefix = "sys.jwt") @Component public class JwtUtils { private Logger logger = LoggerFactory.getLogger(getClass()); private String secret; private int expire; private String header; /** * 生成jwt token * @param userId * @return */ public String generateToken(long userId) { Date nowDate = new Date(); //过期时间 Date expireDate = new Date(nowDate.getTime() + expire * 1000); return Jwts.builder() .setHeaderParam("typ", "JWT") .setSubject(userId+"") .setIssuedAt(nowDate) .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.error("validate is token error", e.toString()); return null; } } /** * token是否过期 * @param expiration * @return */ public boolean isTokenExpired(Date expiration) { return expiration.before(new Date()); } public String getSecret() { return secret; } public void setSecret(String secret) { this.secret = secret; } public int getExpire() { return expire; } public void setExpire(int expire) { this.expire = expire; } public String getHeader() { return header; } public void setHeader(String header) { this.header = header; } }