JWT api

<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
上一篇:题解 CF1530D 【Secret Santa】


下一篇:VS2010 将程序发布至网站时,发生错误“未能给 bin/Debug/publish//setup.exe 签名“