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