我将 JWT 令牌持续时间设置为 13 小时。但是当我解码生成的令牌时,我看到 exp 参数设置为 1 小时。在下面的屏幕截图中,我确定了一个用于过期的代码块。是什么导致了这种情况。
.NET CORE 版本:2.1
var getMusteriInformation = _GlobalServices.GetMusteriSunucuMapInformation(MusteriInfo.Data.Id).Result;
bool serverInfo = getMusteriInformation.IsSuccessfull && getMusteriInformation.Data != null;
if (serverInfo && getMusteriInformation.Data.Sunucular != null)
{
Claims.Add(new Claim("SAdres", CryptoHelper.Encrypt(getMusteriInformation.Data.Sunucular.Ad)));
}
Claims.Add(new Claim("Smmm", ApiPaketlerResponseInfo.Data.Cari != null ? ApiPaketlerResponseInfo.Data.Cari.IsSmm.Value.ToString() : "false"));
Claims.Add(new Claim("Kullanici_Id", KullaniciInfo.Id));
Claims.Add(new Claim("DisplayName", KullaniciInfo.DisplayName ?? KullaniciInfo.Adi.ToUpperRemoveTurkishChar() + " " + KullaniciInfo.Soyadi.ToUpperRemoveTurkishChar()));
Claims.Add(new Claim("TokenID", KullaniciInfo.TokenID.ToString()));
Claims.Add(new Claim("Adi", Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(KullaniciInfo.Adi.ToUpperRemoveTurkishChar()))));
Claims.Add(new Claim("Soyadi", Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(KullaniciInfo.Soyadi.ToUpperRemoveTurkishChar()))));
Claims.Add(new Claim("UserName", KullaniciInfo.KullaniciAdi));
Claims.Add(new Claim("YetkiDuzeyi", yetkiSeviyesi.ToString()));
Claims.Add(new Claim("Roller", JsonConvert.SerializeObject(roles)));
Claims.Add(new Claim("PaketId", KullaniciInfo.PaketSeriNo.ToString()));
Claims.Add(new Claim("TimeStamp", DateTime.UtcNow.ToString("yyyyMMddHHmmss")));
Claims.Add(new Claim("IsAnaKullanici", value: KullaniciInfo.IsAnaKullanici != null ? KullaniciInfo.IsAnaKullanici.Value.ToString() : "false"));
var eDefterYetki = await _EDefterYetkiRepo.FirstOrDefaultAsync(t => t.Kullanici_Id == KullaniciInfo.Id);
if (KullaniciInfo.PaketSeriNo != 0)
{
Claims.Add(new Claim("EPaketNo", CryptoHelper.Encrypt(KullaniciInfo.PaketSeriNo.ToString())));
}
else
{
Claims.Add(new Claim("EPaketNo", CryptoHelper.Encrypt(MusteriInfo.Data.Kodu)));
}
Claims.Add(new Claim("ETokenID", CryptoHelper.Encrypt(KullaniciInfo.TokenID.ToString())));
var symmetricSecurityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Startup.Configuration["Jwt:Key"]));
var signingCredentials = new SigningCredentials(symmetricSecurityKey, SecurityAlgorithms.HmacSha256);
var jwtSecurityToken = new JwtSecurityToken
(
claims: Claims,
issuer: Startup.Configuration["Jwt:Issuer"],
expires: DateTime.UtcNow.AddHours(13),
signingCredentials: signingCredentials
);
Claims.Add(new Claim("app_token", new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken)));
Claims.Add(new Claim("app_token_expiration", jwtSecurityToken.ValidTo.ToString()));
context.IssuedClaims = Claims;
}
else
{
context.IssuedClaims = Claims;
}