Jwt生成后 通过判断时间再有效期内重新生成新的Token
public static class JWTHelper
{
/// <summary>
/// 创建token
/// </summary>
/// <param name="issuer">JWT的签发者</param>
/// <param name="audience">接收JWT的一方</param>
/// <param name="expires">什么时候过期</param>
/// <param name="claims">自定义用户值</param>
/// <param name="SecurityKey">密钥</param>
/// <param name="Algorithms">SecurityAlgorithms.HmacSha256 加密方式</param>
/// <returns></returns>
public static string CreateToken(string issuer,string audience,DateTime expires, Claim[] claims,string SecurityKey, string Algorithms)
{
SymmetricSecurityKey key= new SymmetricSecurityKey(Encoding.UTF8.GetBytes(SecurityKey));
//证书
SigningCredentials credentials = new SigningCredentials(key, Algorithms);
//令牌
JwtSecurityToken token= new JwtSecurityToken(
issuer: issuer,
audience: audience,
claims: claims,
expires: expires,
signingCredentials: credentials);
return new JwtSecurityTokenHandler().WriteToken(token);
}
/// <summary>
/// 刷新token
/// </summary>
/// <returns></returns>
public static string RefreshToken(string Atoken, string SecurityKey)
{
//jwt 解密token
JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
JwtSecurityToken token = handler.ReadJwtToken(Atoken);
return CreateToken(token.Issuer,token.Audiences.FirstOrDefault(),DateTime.Now.AddSeconds(10),new Claim[]{new Claim(ClaimTypes.Name, token.Payload[ClaimTypes.Name].ToString())}, SecurityKey,token.SignatureAlgorithm);
}
}