using System; using JWT.Algorithms; using JWT.Builder; using static HH.WCS.Mobox3.SXJK.util.Settings; namespace HH.WCS.Mobox3.SXJK.util { public class TokenHelper { public static JIPJWTItem jipjwt { get; set; } = Settings.jipJWTItem ;//静态属性,只在第一次使用时被初始化 public static string GetToken() { LogHelper.Info("判断:当前时间:" + DateTime.Now + "token失效时间:" + jipjwt.exp); if (string.IsNullOrWhiteSpace(jipjwt.Token) || jipjwt.exp.AddMinutes(-2) < DateTime.Now)//过期前一分钟提前生成 { jipjwt.exp = DateTime.Now.AddMinutes(10);//5分钟刷新 jipjwt.Token = JwtBuilder.Create() .WithAlgorithm(new HMACSHA256Algorithm()) //new RS256Algorithm(certificate) .Issuer(jipjwt.Issuer) .IssuedAt(DateTime.Now) //签发时间 .ExpirationTime(jipjwt.exp) //过期时间 .NotBefore(jipjwt.exp.AddMinutes(-20)) //生效时间,在过期时间前10分钟生效 .WithSecret(jipjwt.Secret) .Encode(); LogHelper.Info("新生成:当前时间:" + DateTime.Now + "token失效时间:" + jipjwt.exp); } if (string.IsNullOrWhiteSpace(jipjwt.Token)) { throw new Exception("Token生成失败!token为空!"); } return jipjwt.Token; } } }