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;
|
}
|
|
}
|