杨前锦
2025-06-19 d42ad8b01195def2a9309930e14f90ff13ad47b1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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;
        }
    }
}