package com.ywt.outpatient.core.utils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;

import java.util.Date;
import java.util.UUID;

/**
 * JwtUtil Class
 *
 * @author daiyihua
 * @date 2020/02/12
 */
public class JwtUtil {

    /**
     * 使用Hs256算法  生成jwt
     * @param content 加密的内容
     * @param appid appid
     * @param appsecret 私钥
     * @return jwt
     */
    public static String createJWT(String content, String appid, String appsecret) {

        String checksum = MD5CheckSum.md5(content.trim()).toUpperCase();
        // 给定一个算法，如HmacSHA-256 (HS256)
        Algorithm alg = Algorithm.HMAC256(appsecret);

        //  签发Token
        Date currentTime = new Date();
        return JWT.create()
                // 发行者
                .withIssuer(appid)
                // 用户身份标识
                .withSubject("userid")
                // 签发时间
                .withIssuedAt(currentTime)
                // 一天有效期
                .withExpiresAt(new Date(currentTime.getTime() + 24*3600*1000L))
                // 分配JWT的ID
                .withJWTId(UUID.randomUUID().toString())
                // 定义公共域信息
                .withClaim("appid", appid)
                .withClaim("checksum", checksum)
                .sign(alg);
    }



}
