阅读 90

JWT api

0.7.0



io.jsonwebtoken
jjwt
${jwt.version}
/**
* 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

原文:https://www.cnblogs.com/lyy0622/p/15135352.html

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐